-->

x86指令意思[重复](x86 instruction meaning [duplicate])

2019-06-28 00:56发布

这个问题已经在这里有一个答案:

  • 什么是MOV(%R11,%r12,1),EDX%的含义是什么? 2个回答
  • 如何“MOV(%EBX,EAX%,4),%eax中”的工作? [重复] 1个回答

我通过一些代码运行,现在在GDB,我不知道是什么这两个指令实际上做。 如果有人可以帮助我,我会很感激。

add  -0x2c(%ebp, %ebx, 4), %eax
cmp  %eax, -0x28(%ebp, %ebx, 4)

Answer 1:

x86汇编通常更容易,当你在Intel语法,而不是AT&T语法写明白。

在Intel语句这将是:

add eax,[ebp+4*ebx-0x2C]
cmp [ebp+4*ebx-0x28],eax

第一指令( add )将存储在存储器地址字的值[ebp+4*ebx-0x2C]到的值eax ,并存储在和eax

第二指令( cmp )进行比较eax[ebp+4*ebx-0x28]中减去的值eax从存储在存储器中的地址的字的值[ebp+4*ebx-0x28]并设置标志( OFSFZFAFPFCF )相应地,但不存储在任何位置的结果。 cmp是完全一样sub ,唯一的区别是,在事实上sub保存结果,在cmp没有。

比较的类型通常是在表单创建一个条件跳转。 在x86汇编有很多条件跳转,以及他们是否分支取决于该标志的值。



Answer 2:

这是AT&T汇编语法。 这些寻址模式都有点怪异,但在伪代码,他们的意思是:

eax = *(ebp + ebx*4 - 0x2c)

compare eax to *(ebp + ebx*4 - 0x28)

这里有一个链接完整的解释 。



文章来源: x86 instruction meaning [duplicate]