linux(GCC)でのアセンブラ
GCCが生成するアセンブラリストを見てみた。 .file "sample1.c" .section .rodata.LC0: .string "Hello, World." .text.globl main .type main, @functionmain: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp movl $.LC0, (%esp) call puts movl $0, %eax addl $4, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main .ident "GCC: (GNU) 4.1.2 20080704 (Red Hat 4.1.2-44)" .section .note.GNU-stack,"",@progbitsおなじみ(?)のHello, Wolrdだが、引数を渡すのにpushが使われてない。movにてセットしている。Intelのコンパイラもそうだったが気が・・・・