2013-11-21 49 views
0

我想在armcc [rvct 3.1] build environment中獲得C語言標籤的地址。在armcc中,如何獲得C語言標籤的地址? Thks

如:

void func() 
{ 
    int * aptr; 
LABEL: 
    .... 
    goto LABEL; 
} 

如果VC ENV,得到它像這樣(使用匯編程序:偏移量):

void func() 
{ 
    void * aptr; 
    __asm{ mov [aptr],offset LABEL }; 

LABEL: 
    .... 
    __asm{ jmp aptr}; 
} 

,如果在GCC ENV,得到它像這樣(使用& &):

void func() 
{ 
    void * ptr = &&LABEL; 

LABEL: 
    .... 
    goto *aptr; 
} 

但在ENV器armcc,誰可以告訴我怎麼去?我對ARMCC裝配不熟悉。請參閱

+0

有人知道嗎?help – nix

回答

0

這不一定是可能的。根據編譯器,將無法做到這一點。

爲什麼不編譯爲彙編器並查看彙編器輸出?

+0

因爲msg太長了,請參考第二個回答,由我自己回答。 – nix

0

查找使用ldr/adr/adrl指令獲取標籤地址的「rvct編譯器用戶指南」,並且我以__asm {....}方式逐一嘗試這些指令,所有編譯都失敗。 如:

__asm 
{ 
    ldr r0,LABEL //Error: #20 identifier "LABEL" is undefined 
    //ldr r0,LABEL //Error: #20 identifier "LABEL" is undefined 
        //Error: #1097:Expected [ or ] 
    //ldr r0,=LABEL //Error: #20 identifier "LABEL" is undefined 
        //Error: #1097:Expected [ or ]      
LABEL:  //LABEL is here! 
} 

..... blablabla

ADR/ADRL指令給出錯誤了。我對編譯器和彙編語言很陌生。我不知道

相關問題