pad*_*apa 5 assembly x86-64 cpu-registers
pushq %rbp
movq %rsp, %rbp
subq $32, %rsp
Run Code Online (Sandbox Code Playgroud)
我对第三条指令中“$32”的解释有很大疑问。来自搜索和博客的信息表明,在上面的第三条指令中,我们为堆栈保留了某些“字节”空间。从文档来看,%rsp 是 64 位寄存器,%esp 是 32 位。
“$32”是否表示 32 个字节?($number 表示常量?)如果是,那么我们如何在 64 位寄存器上分配 32 个字节?以上指令是从“otool”生成的。我正在使用 macbook pro。
我只是想学习一些有关装配的小知识。
谢谢。
“$32”是否表示 32 个字节?($number 表示常量?)如果是,那么我们如何在 64 位寄存器上分配 32 个字节?
这32个字节没有分配在64位寄存器上。它们分配在堆栈上。通过降低堆栈指针(位于 %rsp 中),我们可以使用从 %rsp 到 %rsp+31 的地址范围来存储数据。