是什麼這種類型的代碼的區別:不同種類的裝配?
.text
.globl main
.type main, @function
main:
movl $0, %eax
movl $0, (%esp)
call exit
和這種類型的代碼:
section .text
global _start
_start:
mov edx, eax
哪個更傳統和優化更好?
是什麼這種類型的代碼的區別:不同種類的裝配?
.text
.globl main
.type main, @function
main:
movl $0, %eax
movl $0, (%esp)
call exit
和這種類型的代碼:
section .text
global _start
_start:
mov edx, eax
哪個更傳統和優化更好?
第一個是AT & T組裝款式,第二個是Intel組裝款式。沒有真正的重大差異。例如,GCC通常以ATT型產生組裝(參見GNU彙編器GAS),而Microsoft和Intel編譯器將產生Intel組裝式(參見MASM,NASM)輸出。
我更喜歡英特爾風格,因爲它對我來說似乎更清晰,但我認爲這是個人品味的問題。
有一個關於兩種風格差異的文檔可能會有幫助。
然後首先被稱爲AT & T型組件,是一種可憎的。
第二種是英特爾風格,英特爾在x86指令集文檔中使用它。
爲什麼它是可憎的?不會像intel風格那樣純粹翻譯成機器代碼? – user2586185
@ user2586185:對我個人而言:特殊字符混亂 – peterchen
+1 - AT&T是可憎的,是純粹的邪惡。 :P – johnfound
第一寫入AT對GAS & T語法。第二個是用英特爾語法編寫的,似乎是用於NASM的。
我會說英特爾語法更傳統,因爲他們是x86處理器的設計者。儘管您仍然看到AT & T語法被使用。沒有一個比另一個更適合優化。
它們不是兩種不同的類型,它是用兩種不同的語法編寫的相同程序集(英特爾彙編程序)。 – m0skit0
嗯,尋找什麼樣的優化?這是我們在這裏討論的彙編語言。在達到這一點之前,應該先完成優化。 –