x86指令进行操作码转换

时间:2012-11-28 11:01:39

标签: x86 x86-64

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

1 个答案:

答案 0 :(得分:0)

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字节。