CMP dword ptr [EBP + local_c],0xdeadbeef是什么意思?

时间:2020-07-13 17:31:08

标签: assembly x86

有人可以解释一下吗

CMP        dword ptr [EBP + local_c], 0xdeadbeef

表示。据我了解,将EBP+local_c位置值与0xdeadbeef进行比较,但是我不确定这是否正确。

预先感谢

2 个答案:

答案 0 :(得分:4)

EBP + local_c在此处被视为内存地址,指向一个dword值。指示

CMP  dword ptr [EBP + local_c], 0xdeadbeef

因此将此存储位置的值与0xdeadbeef进行比较。

答案 1 :(得分:4)

[EBP + local_c]是间接寻址模式下的地址。 EBP加上一些补偿。对于此汇编语言(由汇编程序(而不是目标程序)定义),以指示该基于间接地址的指令应操作的大小为dword ptr,这意味着第一个操作数在所示地址为32位值。第二个操作数是立即数,常量为0xdeadbeef。

该指令的意思是从地址EBP + local_c读取32位值,并执行CMP指令,其值为0xdeadbeef。 CMP意味着进行减法运算,保存标志但不保存结果。因此,将根据这两个操作数之间的减法来修改零标志和其他标志。

理想情况下,后面的指令将根据在此指令期间计算出的标志进行决策。