我有一个简单的C代码,可以通过GCC 7.5生成汇编代码:
void swap(int* a, int* b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
int main()
{
int a = 16, b = 32;
swap(&a, &b);
return 0;
}
我使用以下命令获取汇编代码:gcc -Wall -S -o main.s main.c,在main.s中,我找到以下行:
main:
.LFB1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp #line 9
movq %fs:40, %rax #line 10
movq %rax, -8(%rbp) #line 11
xorl %eax, %eax #line 12
......
我有两个问题: