文本作为内联汇编(ARM)中的参数?

时间:2015-06-08 14:11:13

标签: gcc arm inline-assembly

有没有办法将纯文本放入内联汇编(ARM)? 我的问题是阅读库存寄存器。 语法是(用户模式的r11):

mrs r0, r11_usr

问题在于" usr" -part。

我试过了:

#define READ_REG_MODE(retvar, rg, mode) \
    asm volatile (\
    "mrs %[reg], r%c[rn]_%c[mod]\n\t"\
    :[reg] "=r" (retvar)\
    :[rn]"I"(rg), [mod]"X"("mode"):\
    )

在此宏和宏调用中有和没有引号。 用[mod]" X"("模式")我得到了:

  

错误:所选处理器不支持请求的特殊用途   注册 - `mrs r0,r11_.LC0'

1 个答案:

答案 0 :(得分:1)

这实际上并不需要靠近汇编程序 - C预处理器可以使用“stringification”# operator自行处理所有内容:

#define READ_REG_MODE(retvar, rg, mode) \
    asm volatile (\
    "mrs %[reg], r%c[rn]_" #mode "\n\t"\
    :[reg] "=r" (retvar)\
    :[rn]"I"(rg):\
    )