0

movdqa xmm0, ptr fs:[eax]并且movdqu (Array[ebx]), xmm0这两条指令没有在我的编译器中执行。请告诉我这些指令的确切操作码?

4

1 回答 1

1
movdqa xmm0, ptr fs:[eax]

FS对,(三字节)操作码和 ModR/M 字节使用段覆盖前缀。它应该如下所示:

0x64           ;<-- segment override prefix FS
0x66 0x0F 0x6F ;<-- opcode
0x00           ;<-- ModR/M is 000 for Reg (xmm0), 00 for Mod 
               ;(single member addressing) and 000 for Memory ([EAX])

第二条指令不使用段覆盖前缀。

movdqu (Array[ebx]), xmm0

我想我不明白这里的第一个括号。如果他们的意思是设置值Array[ebx],那么代码应该如下所示:

0xF3 0x0F 0x7F ;<-- opcode
0x80           ;ModR/M is 00 for Reg (xmm0), 10 for Mod
               ;(register+disp32) and 000 for memory ([EAX+disp32])
0xdeadbeef     ;little-endian encoded address displacement for Array

如果它们意味着高级计算,则需要 SIB 字节。

于 2013-08-13T06:41:40.940 回答