我需要编写将返回特定硬件寄存器值的 C 函数。例如 R0。
我从 GHS 文档中不清楚这是如何使用 GHS 编译器提供的宏来完成的。
uint32_t readRegRx(void)
{
uint32_t x = 0U;
__asm("MOV Rx, ??");
return x;
}
GHS 编译器中用于将局部变量作为内联汇编指令的参数引用的语法是什么?
我在 GHS 文档中看到了这一点:
asm int mulword(a,b)
{
%con a %con b
mov r0,a
mov r1,b
mul r0,r1,r0
%con a %reg b
mov r0,a
mul r0,b,r0
%reg a %con b
mov r0,b
mul r0,a,r0
%reg a %reg b
mul r0,a,b
%con a %mem b
mov r0,a
ldr r1,b
mul r0,r1,r0
%mem a %con b
ldr r0,a
mov r1,b
mul r0,r1,r0
%mem a %mem b
ldr r0,a
ldr r1,b
mul r0,r1,r0
%error
}
但这并不是我想要的,我想。上面文档中的示例描述了一个带参数的函数。返回值隐含在 R0 中。
就我而言,我想要的是使用一个普通的 C 函数,它带有嵌入式内联程序集来读取寄存器(R-anything)并将值存储在函数的局部变量中。