assembly gcc inline asm / constraints /“r”与“l”相关,就像“g”与.相关一样,

mbyulnm0  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(100)

我尝试使用 arm-none-eabi-gcc 为ARM Cortex-M0+(STM32 G 030)编译此代码:

asm("ldrb %0, [%1, %2]\n" : "=l" (v) : "l" (R.a+(o&~31)) , "g" (o&31));

字符串
其中变量o可能在编译时或稍后在运行时已经已知(那么我将使用约束“l”,因为它必须是lo寄存器(r 0-r7).我使用那些16位thumb指令)。
如果编译时一个值是未知的,是否有一个约束,强制gcc使用lo寄存器?

rdlzhqv9

rdlzhqv91#

看起来,我可以给予多个约束,GCC选择最好的一个:

asm("ldrb %0, [%1, %2]\n" : "=l" (v) : "l" (R.a+(o&~31)) , "li" (o&31));

字符串

  • 耶 *

相关问题