x86 mov操作码反汇编

时间:2011-12-15 10:53:56

标签: debugging assembly x86 x86-64 disassembly

我内置了IDE x86 debbuger,它拆解了这个:

第一种情况:

65 48 8B 05 30 00 00 00
mov rax,gs:[rel $00000030]

第二种情况:

65 48 8B 04 25 30 00 00 00
mov rax,gs:[+$0030]

有什么区别?

我怀疑反汇编有问题,但不能翻译上操作码。

我所知道的是:

  • 65gs前缀
  • 48REX.W前缀
  • 8Bmov ...
  • ... ???

1 个答案:

答案 0 :(得分:8)

第一个是RIP相对,第二个是绝对地址。

有关操作码的翻译,请参阅http://www.sandpile.org。 正如Polynomial指出的那样,http://ref.x86asm.net甚至更好,但目前不支持AVX或XOP。

  • 8B - 操作码 - 以mov Gv, Ev给出,其中Gv表示寄存器目标,其中Ev是r / m目的地。
  • 05 - mod r / m - 将rax表示为目标,rip相对为有效地址
  • 30 00 00 00偏移到rip

第二个:

  • 8B - 操作码 - 以mov Gv, Ev给出,其中Gv表示寄存器目标,其中Ev是r / m目的地。
  • 04 - mod r / m - 表示rax为目标,sib为有效地址
  • 25 - sib - address的格式为[basereg + indexreg * stride + offset],在这种情况下,base和index都是0。
  • 30 00 00 00抵消。
相关问题