编写代码:code/1.1/ add.c :
int add(int a, int b) {
int result;
result = a + b;
return result;
}
int main(int argc, char *argv[]) {
int a,b,result;
a = 1;
b = 2;
result = add(a,b);
return 0;
}
执行shell命令得到汇编代码:
gcc -S add.c -o add.s
生成代码: code/1.1/ add.s ,其中的关键部分:
add:
pushq %rbp
movq %rsp, %rbp
movl %edi, -20(%rbp)
movl %esi, -24(%rbp)
movl -24(%rbp), %eax
movl -20(%rbp), %edx
addl %edx, %eax
movl %eax, -4(%rbp)
movl -4(%rbp), %eax
popq %rbp
ret
main:
pushq %rbp
movq %rsp, %rbp
subq $32, %rsp
movl %edi, -20(%rbp)
movq %rsi, -32(%rbp)
movl $1, -12(%rbp)
movl $2, -8(%rbp)
movl -8(%rbp), %edx
movl -12(%rbp), %eax
movl %edx, %esi
movl %eax, %edi
call add
movl %eax, -4(%rbp)
movl $0, %eax
leave
ret