对于变长栈帧中数组申请对齐的处理

文章详细解析了vframe汇编代码中的`andq$-16,%rax`指令,该指令用于确保内存分配在16字节边界上对齐。通过`subq`和`leaq`指令配合,实现了动态计算并分配内存空间,确保数据访问效率。
摘要由CSDN通过智能技术生成

csapp p202对于vframe汇编代码中

主要理解对于andq $-16的处理

vframe:

  pushq  %rbp

  movq   %rsp,%rbp

  subq    $16,%rsp  // long本来只需要8位,这里进行16位对齐

  leaq     22(,%rdi,8),%rax    //%rax = 8n+22

  andq    $-16,%rax      //获取向下舍入16的最小的倍数,n为奇数时为8n+8,n为偶数时为8n+16  实现16位对齐

  subq    %rax,%rsp  //分配空间

  leaq     7(%rsp),%rax

  shrq     $3,%rax

  leaq     0(,%rax,8),%r8  将s2舍入到距离8最近的位置

  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值