assembly 什么cmpl $0x1,-0x18(ebp)?[重复]

vwhgwdsa  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(116)

此问题在此处已有答案

How to understand "cmpl $0x0, -0x30(%rbp)" / "je ..."(2个答案)
x86 cmpl and jne(1个答案)
三年前就关门了。
所以我有一行代码来进行逻辑比较,比如:cmpl $0x1, -0x18(ebp)。在这之后,如果这是相等的,它就会跳,但是-0x18(ebp)到底是做什么的?

s5a0g9ez

s5a0g9ez1#

让我们把它分解一下。
-0x18(ebp)取存储在ebp寄存器中的值,从中减去0x18,并将结果用作从中读取的存储器地址。
因此,cmpl $0x1, -0x18(ebp)读取存储在从-0x18(ebp)计算的存储器地址处的值,并从中减去$0x1,根据计算结果设置各种标志(例如,如果减法结果为0,则将零标志ZF设置为1)然后,各种jmp指令基于所设置的标志来确定是否跳转。

相关问题