组装可变尺寸堆栈?

时间:2019-09-22 18:37:19

标签: c assembly

因此,我正在阅读CS:APP(该书基于x86-64),并且遇到了有关可变大小数组的练习,该数组暗示了可变大小的堆栈。提供了以下代码和程序集输出(格式不允许我复制代码): enter image description here 以及带有此代码的堆栈框架的结构 enter image description here

即使我已经读过有关数据对齐,不同的算术运算等信息,该程序集也会引起很多问题-这些是:

  • 我得到%rbp的用法以指向要返回的基准地址。但是,为什么在世界上为仅需要8个字节的变量i分配16个字节呢?我不明白为什么这就是为什么需要数据对齐的原因
  • 在程序集的第5行中,它是leaq 22(,%rdi,8), %rax-为什么是22?我将第6行的值四舍五入到最接近的16位,但这与22位有什么关系?
  • 类似地,在第8-10行中,为什么选择leaq 7(%rsp), %rax
  • 我不明白为什么图中可能需要填充 p s2 -此填充显示为 e2

0 个答案:

没有答案