編譯時添加編譯條件 –masm=intel, 或者–masm=att,會生成Intel格式或者AT&T格式的代碼;在Intel格式中使用[], 而AT&T格式則不一樣。
比如:
AT&T: -4(%ebp) //相當於 Intel: [ebp - 4]
AT&T: foo(,%eax,4) //相當於 Intel: [foo + eax*4]
AT&T: foo(,1) //相當於 Intel:[foo]
AT&T: %gs:foo //相當於 Intel:gs:foo
AT&T: movl -4(%ebp), %eax //相當於 Intel: mov eax, [ebp - 4]
AT&T: movl array(, %eax, 4), %eax //相當於 Intel: mov eax, [eax*4 + array]
AT&T: movw array(%ebx, %eax, 4), %cx //相當於 Intel: mov cx, [ebx + 4*eax + array]
AT&T: movb $4, %fs:(%eax) //相當於 Intel: mov fs:eax, 4