首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在armcc中,如何获取C语言的标签地址?非常感谢

在armcc中,如何获取C语言的标签地址?非常感谢
EN

Stack Overflow用户
提问于 2013-11-21 13:51:23
回答 2查看 138关注 0票数 0

我想在armccrvct3.1编译环境中获得C语言的标签地址。

例如:

代码语言:javascript
复制
void func()
{
    int * aptr;
LABEL:
    ....
    goto LABEL;
}

如果在VC环境中,像这样获取它(使用assembly ins :offset):

代码语言:javascript
复制
void func()
{
    void * aptr;
    __asm{ mov [aptr],offset LABEL };

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

如果是在GCC环境中,则如下所示(使用&&):

代码语言:javascript
复制
void func()
{
    void * ptr = &&LABEL;

LABEL:
    ....
    goto *aptr;
}

但是在armcc环境下,谁能告诉我如何获得?我不熟悉ARMCC assembly.thks。

EN

回答 2

Stack Overflow用户

发布于 2013-11-21 19:02:00

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

为什么不编译成汇编程序,看看汇编程序的输出呢?

票数 0
EN

Stack Overflow用户

发布于 2013-11-22 15:01:26

查找"rvct编译器用户指南“中提到的使用ldr /adr /adrl指令来获取标签的地址,我在__asm{....}中逐一尝试这些指令,所有的编译都失败了。例如:

代码语言:javascript
复制
__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指令也会给出错误。我对编译器和汇编语言很陌生。我不知道

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20113503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档