有人可以解释一下吗
CMP dword ptr [EBP + local_c], 0xdeadbeef
表示。据我了解,将EBP+local_c
位置值与0xdeadbeef进行比较,但是我不确定这是否正确。
预先感谢
答案 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意味着进行减法运算,保存标志但不保存结果。因此,将根据这两个操作数之间的减法来修改零标志和其他标志。
理想情况下,后面的指令将根据在此指令期间计算出的标志进行决策。