该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
$cat t.c
int main(){return 0;}
$gcc -S t.c
$cat t.s
$ cat t.s
.file"t.c"
.text
.globl main
.typemain, @function
main:
leal4(%esp), %ecx
andl$-16, %esp
pushl-4(%ecx)
pushl%ebp
movl%esp, %ebp
pushl%ecx
movl$0, %eax
popl%ecx
popl%ebp
leal-4(%ecx), %esp
ret
.sizemain, .-main
.ident"GCC: (Debian 4.3.2-1.1) 4.3.2"
.section.note.GNU-stack,"",@progbits
----------------------------------------------------------
$cat tt.c
int main() {}
$gcc -S tt.c
$cat tt.s
.file "tt.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $4, %esp
addl $4, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.sizemain, .-main
.ident"GCC: (Debian 4.3.2-1.1) 4.3.2"
.section.note.GNU-stack,"",@progbits
设置return 0和不设置在C里面对GCC来说 是确实不同的
但是对C++来说 g++会自动加入返回0
但这个结果只是对gcc/g++测试的 lz为何不更换下编译器套件看看呢?