LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1781|回复: 3

编译出来的汇编代码里这条指令andl $-16, %esp是做什么用的?这条指令有必要吗?

[复制链接]
发表于 2008-1-31 22:46:36 | 显示全部楼层 |阅读模式
编译出来的汇编代码里这条指令andl $-16, %esp是做什么用的?这条指令有必要吗?
  1.         .text
  2. .globl main
  3.         .type        main, @function
  4. main:
  5.         leal        4(%esp), %ecx
  6.         andl        $-16, %esp;$-16 = FFFF FFF0
  7.         pushl        -4(%ecx)
  8.         pushl        %ebp
  9.         movl        %esp, %ebp
复制代码
发表于 2008-2-1 12:14:14 | 显示全部楼层

为了给局部变量欲留位置

为了给局部变量欲留位置
回复 支持 反对

使用道具 举报

发表于 2008-2-1 12:32:04 | 显示全部楼层
我觉的是对齐操作,然后还有防止缓冲区溢出的作用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-1 13:47:13 | 显示全部楼层
Post by faku;1813315
为了给局部变量欲留位置

那样的话应该用add而不是andl

Post by swordman;1813321
我觉的是对齐操作,然后还有防止缓冲区溢出的作用

对,我也觉得是对齐操作,只是觉得这条指令会不会有一点多余。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表