次のコードを cygwin の GCC で asm にコンパイルすると:
int scheme_entry() {
return 42;
}
使用:
gcc -O3 --omit-frame-pointer -S test1.c
次の「ASM」が生成されます。
.file "test1.c"
.text
.p2align 4,,15
.globl _scheme_entry
.def _scheme_entry; .scl 2; .type 32; .endef
_scheme_entry:
movl $42, %eax
ret
しかし、「MOVL」コマンドは実際には x86 ASM ではありません。次のリストを見ると:
http://ref.x86asm.net/geek.html#x0FA0
http://en.wikipedia.org/wiki/X86_instruction_listings
MOVL コマンドはありませんが、あります。
CMOVL
CMOVLE
MOVLPS
MOVLPD
MOVLHPS
私の質問は - gcc ASM は「単純化された ASM」ですか? もしそうなら、それを「実際の ASM」にマップするにはどうすればよいですか?