我尝试使用 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寄存器?
rdlzhqv91#
看起来,我可以给予多个约束,GCC选择最好的一个:
asm("ldrb %0, [%1, %2]\n" : "=l" (v) : "l" (R.a+(o&~31)) , "li" (o&31));
字符串
1条答案
按热度按时间rdlzhqv91#
看起来,我可以给予多个约束,GCC选择最好的一个:
字符串