GCC 汇编输出-S
编译的过程就是把预处理完的一文件进行一系列的词法分析,语法分析及优化后的结果生成相应的汇编文件。gcc在默认的情奖品下,是不输出这汇编代码的文件的,如果需要,我们可以使用-S
输出。
如代码:test.c
#include<stdio.h>
int main(int argc,char* argv[])
{
int i=0;
for(i=0;i<10;i++)
{
printf("%d\n",i);
}
return 0;
}
使用gcc进行编译
gcc -S test.c -o test.s
将编译后的结果存放到test.s中
.file "test.c"
.section .rodata
.LC0:
.string "%d\n"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
movl %edi, -20(%rbp)
movq %rsi, -32(%rbp)
movl $0, -4(%rbp)
movl $0, -4(%rbp)
jmp .L2
.L3:
movl -4(%rbp), %eax
movl %eax, %esi
movl $.LC0, %edi
movl $0, %eax
call printf
addl $1, -4(%rbp)
.L2:
cmpl $9, -4(%rbp)
jle .L3
movl $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-36)"
.section .note.GNU-stack,"",@progbits