c变量的压栈操作
int main() { long t = 10; int x = 10; short y = 20; char c = 'a'; return 0; } 生成的汇编如下 1、long t = 10 ⇒ movq $10, -16(%rbp) 也就是 10 存储在下面8字节中。 %rbp - 16 %rbp - 15 %rbp - 14 %rbp - 13 %rbp - 12 %rbp - 11 %rbp - 10 %rbp - 9 2、int x = 10; ⇒ movl $10, -8(%rbp) 也就是 10 存储在下面4字节中。 %rbp - 8 %rbp - 7 %rbp - 6 %rbp - 5 3、short y = 20; ⇒ movw $20, -4(%rbp) 也就是 10 存储在下面2字节中。 %rbp - 4 %rbp - 3 4、char c = 'a'; ⇒ movb $97, -1(%rbp) 也就是 a存储在下面1字节中。 %rbp - 1
从上面的例子可以看出,变量值从低地址到高地址存放。