2013-02-03 48 views
0

我遇到鏈接器從內聯彙編代碼生成未定義參考錯誤 的問題。引用gcc中的內聯程序集的全局變量

int global_var = 0; 
void myfunc() 
{ 
    asm(".intel_syntax noprefix\n"); 
    asm("lea eax, global_var\n"); 
} 

我與-masm =英特爾與沒有優化或任何編譯,使用GCC 3.4.2 如果有人從這種不便遭受了請協助。

回答

1

基本上,這是一個問題名稱損壞 - 也就是說,編譯器在編譯階段損壞(改變)變量和函數的名稱。在這種情況下,「global_var」被更改爲「_global_var」

如果更改函數的第二行以使其訪問「_global_var」,那麼它編譯得很好。 (經過測試的GCC 4.7.1)

+0

呃謝謝你! 我忘了minGW這麼做,它在Linux下不會發生。 –

+0

正確的方法是使用約束。 – Jester

相關問題