c变量的压栈操作

Posted 蜗牛码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c变量的压栈操作相关的知识,希望对你有一定的参考价值。

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变量的压栈操作的主要内容,如果未能解决你的问题,请参考以下文章

1. 用C++或Java写一个关于堆栈的类描述,并为堆栈的压栈(push)和出栈(pop)操作编写方法

栈增长方向和数组增长方向

Offer[31] 栈的压入弹出序列

栈的压入弹出序列

栈的压入弹出序列

栈的压入弹出序列——22