0

我想在 armcc[rvct 3.1] 构建环境中获取 C 语言的标签地址。

如:

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

如果在 VC 环境中,像这样得到它(使用程序集 ins :offset):

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

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

如果在 GCC 环境中,得到它(使用 &&):

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

LABEL:
    ....
    goto *aptr;
}

但是在armcc env中,谁能告诉我如何获得?我不熟悉 ARMCC 程序集。thks

4

2 回答 2

0

这根本不可能。根据编译器的不同,没有办法做到这一点。

为什么不编译到汇编器并查看汇编器输出?

于 2013-11-21T11:02:00.013 回答
0

查找它提到的“rvct 编译器用户指南”,使用 ldr /adr /adrl 指令来获取标签的地址,我以 __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 指令也会出错。我对编译器和汇编语言不熟悉。我不知道

于 2013-11-22T07:01:26.063 回答