【发布时间】:2017-11-13 01:57:09
【问题描述】:
所以我想弄清楚这个函数是做什么的,但是我对这个指令序列有点困惑:
mov -0x4(%rsp),%eax
lea 0x0(,%rax,8),%edx
在此之前,函数中没有提到 rax。 rax 寄存器中的值是什么——它只是堆栈的顶部吗?
上一行是mov -0x4(%rsp),%eax,那么它只是eax 中的内容吗?
【问题讨论】:
-
eax是rax的低 32 位,写入eax会清除高 32 位。所以,是的,rax在地址rsp-4处将内存中的 32 位值零扩展到 64 位。
标签: assembly x86 disassembly