x86指令含义

Req*_*iem 2 x86 assembly att addressing-mode

我现在在gdb上运行一些代码,我不知道这两个指令实际上是做什么的.如果有人能帮助我,我真的很感激.

add  -0x2c(%ebp, %ebx, 4), %eax
cmp  %eax, -0x28(%ebp, %ebx, 4)
Run Code Online (Sandbox Code Playgroud)

nrz*_*nrz 5

当您使用Intel语法而不是AT&T语法编写x86程序集时,通常会更容易理解.

在英特尔语法中它将是:

add eax,[ebp+4*ebx-0x2C]
cmp [ebp+4*ebx-0x28],eax
Run Code Online (Sandbox Code Playgroud)

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

第二指令(cmp)进行比较eax[ebp+4*ebx-0x28]通过减去的值eax从存储在存储器地址的字的值[ebp+4*ebx-0x28],并设置标志(OF,SF,ZF,AF,PF,CF)相应地,但不存储在任何位置的结果.cmp是完全相同的sub,唯一的区别是sub结果是保存的事实,而cmp不是.

比较类型通常以条件跳转的形式创建.在x86程序集中,有很多条件跳转以及它们是否分支取决于标志的值.