2012-02-11 25 views

回答

5

X86 assembly syntax不同口味。帶%的稱爲AT & T.另一個稱爲Intel。不同的彙編程序使用不同的語法。一些(氣體)與兩者兼容。

6

對於所有的彙編程序,當您需要引用碰巧與寄存器名稱相同的符號時會出現問題。例如,如果你有一些C代碼中包含函數「int eax()」,並且你將它與一些彙編代碼連接起來,那麼彙編器就需要知道「eax」是寄存器還是函數。

爲了解決不同的彙編器做不同的事情。一些(例如NASM)會假定「eax」是寄存器,並且需要某些類型的前綴用於模糊符號(例如「$ eax」來引用符號而不是寄存器)。其他人(例如GAS)做相反的處理,並在註冊名稱中加上前綴;有時即使根本沒有歧義(例如,「%eax」指的是寄存器,「eax」指的是符號)。