文本作为内联汇编(ARM)中的参数?
Text as parameter in inline assembly (ARM)?
有没有办法将纯文本放入内联汇编 (ARM) 中?
我的问题是读取银行寄存器。
语法是 (r11 of user mode):
mrs r0, r11_usr
问题出在 "usr" 部分。
我试过了:
#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"("mode") 我得到:
Error: selected processor does not support requested special purpose
register -- `mrs r0,r11_.LC0'
这实际上不需要靠近汇编程序 - 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):\
)
有没有办法将纯文本放入内联汇编 (ARM) 中? 我的问题是读取银行寄存器。 语法是 (r11 of user mode):
mrs r0, r11_usr
问题出在 "usr" 部分。
我试过了:
#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"("mode") 我得到:
Error: selected processor does not support requested special purpose register -- `mrs r0,r11_.LC0'
这实际上不需要靠近汇编程序 - 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):\
)