我想在armccrvct3.1编译环境中获得C语言的标签地址。
例如:
void func()
{
int * aptr;
LABEL:
....
goto LABEL;
}如果在VC环境中,像这样获取它(使用assembly 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环境下,谁能告诉我如何获得?我不熟悉ARMCC assembly.thks。
发布于 2013-11-21 19:02:00
这不一定是可能的。根据编译器的不同,没有办法做到这一点。
为什么不编译成汇编程序,看看汇编程序的输出呢?
发布于 2013-11-22 15:01:26
查找"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指令也会给出错误。我对编译器和汇编语言很陌生。我不知道
https://stackoverflow.com/questions/20113503
复制相似问题