首页 > 其他 > 详细

c变量的压栈操作

时间:2017-09-04 17:32:20      阅读:242      评论:0      收藏:0      [点我收藏+]
int main()
{
   long t = 10;
   int x = 10;
   short y = 20;
   char c = a;
    return 0;
}
生成的汇编如下
1long t = 10 
?
movq    $10, -16(%rbp)   
也就是 10 存储在下面8字节中。
 %rbp - 16 
 %rbp - 15
 %rbp - 14
 %rbp - 13
 %rbp - 12
 %rbp - 11
 %rbp - 10
 %rbp - 9

int x = 10;
 ?
movl    $10, -8(%rbp)

也就是 10 存储在下面4字节中。
 %rbp - 8
 %rbp - 7
 %rbp - 6
 %rbp - 5

short y = 20;
 ?
movw    $20, -4(%rbp)

也就是 10 存储在下面2字节中。

   %rbp - 4

 %rbp - 3

char c = a;

 ?
movb    $97, -1(%rbp)

也就是 a存储在下面1字节中。
 %rbp - 1

从上面的例子可以看出,变量值从低地址到高地址存放。

c变量的压栈操作

原文:http://www.cnblogs.com/snail88/p/7474388.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!