【ASM】汇编指令movdqa与movdqu的区别

Date: 2018.6.11


参考:https://blog.csdn.net/u011019337/article/details/9260257

介绍两条移动双四字数据的指令:


MOVDQA - 移动对齐的双四字
将双四字从源操作数(第二个操作数)移到目标操作数(第一个操作数)。此指令可以用于在 XMM 寄存器与 128 位内存位置之间移入/移出双四字,或是在两个 XMM 寄存器之间移动。源操作数或目标操作数是内存操作数时,操作数必须对齐 16 字节边界,否则将生成一般保护性异常 (#GP)


MOVDQU - 移动非对齐的双四字
要在未对齐的内存位置中移入/移出双四字,请使用 MOVDQU 指令。
在 16 位寻址模式中执行时,不允许 128 位数据访问的线性地址与 16 位段尾重叠,此时的行为定义成保留行为。在这种情形下,特定的处理器版本可能会生成 #GP 异常,也可能不会,并且,跨越段尾的地址可能会通过舍位变成段首地址,也可能不会。

注: #GP:一般保护性异常是在PC机用户程序企图访问不可访问地址时出现的错误。

原文地址:https://www.cnblogs.com/SoaringLee/p/10532452.html