當我編譯下面的代碼到ASM在GCC在Cygwin上:使用GCC生成的ASM簡化的x86 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」?
AT&T語法應在頭拍攝。我不知道爲什麼有人用它 – James 2012-04-22 01:56:03
@詹姆斯我更喜歡AT&T的語法,因爲我覺得它更簡潔,更易於閱讀。由於源操作數首先出現,因此它也更好地流動。 – ughoavgfhw 2012-04-22 02:22:10