64位指针如何在x86_64汇编程序中适合4个字节

时间:2017-11-28 21:38:02

标签: gcc assembly

我目前正在阅读以下博客,了解如何编写汇编程序。我理解博客中的所有内容,但我无法理解一件事。

https://www.recurse.com/blog/7-understanding-c-by-learning-assembly

代码:

0x0000000100000f50 <main+0>:    push   %rbp
0x0000000100000f51 <main+1>:    mov    %rsp,%rbp
0x0000000100000f54 <main+4>:    mov    $0x0,%eax
0x0000000100000f59 <main+9>:    movl   $0x0,-0x4(%rbp)

我不明白为什么我们可以将0写入-0x4(%rbp)。在第1行,我们将指针保存在堆栈中的寄存器%rbp中。由于%rbp寄存器大小为64位,我后来预计我们必须将0写入堆栈中的-0x8(%rbp)位置而不是-0x4(%rbp),这只是4个字节(32位)。

任何人都可以解释一下吗?

提前致谢。

0 个答案:

没有答案