2017-04-21 72 views
-2

我想用C語言獲得程序集的標籤地址。這裏是例子使用C獲取程序集的標籤地址C

我有一個start.S中的文件:

.fun: 
    // do something 

而且我有一個main.c文件,:

volatile unsigned int * p = (unsigned int *) 0x1000; 

我想寫的標籤地址「樂趣」成0x1000的內存,所以我寫

*p = fun; 

但它不能與錯誤信息被編譯:

'fun' undeclared (first use in this function) 

感謝您的幫助。

+2

重命名'.fun'到'fun'和使用的彙編文件中'.globl fun'導出的符號?如果目標是Windows並且您沒有使用ELF,那麼您可能必須在'.S'文件中爲'fun'標籤預置一個'_'(下劃線)。 –

+1

當然,在_C_中,你還必須聲明'extern'用於'fun' –

+1

@MichaelPetch如果目標是32位,則'_'必須加前綴。至少在Windows上64位名稱修改不使用'_'。 –

回答

0

extern fun;

* P =(無符號整數)&fun;

相關問題