Mat*_*Mat 5 gcc arm inline-assembly
在 x86 内联汇编中,我可以这样写:
asm ("cpuid"
: "=a" (_eax),
"=b" (_ebx),
"=c" (_ecx),
"=d" (_edx)
: "a" (op));
Run Code Online (Sandbox Code Playgroud)
所以在 matchin 约束中,而不是只写“=r”并让编译器选择寄存器,我可以说我想使用哪个特定的寄存器(=a 例如使用 %eax)
我怎样才能为 ARM 程序集做到这一点?ARM GCC 汇编手册http://www.ethernut.de/en/documents/arm-inline-asm.html指出,例如,我可以将约束“r”用于通用寄存器 R0-R15“w”之一" 对于 VFP 浮点寄存器 S0-S31 之一
但是我怎样才能将一个操作数限制在例如 s1 呢?或特定的通用寄存器?
我认为 ARM 的 gcc 不允许您使用约束来准确指定要使用的寄存器。但是,您可以使用显式寄存器变量来指定一个寄存器来存储变量:
register int my_variable asm("r0");
Run Code Online (Sandbox Code Playgroud)