assembly arm - 我如何读回寄存器值并将其存储在普通的 c 变量中

assembly arm - how do I read back a register value and store that in a plain c variable

我需要将寄存器 (r9) 读入变量。

我有这个

 pxTopOfStack[9-4] = 0x20000000;  // Set the task's initial R9 value

0x20000000 存储在 R9 中。

如何在 arm 程序集中内联它?我可以在汇编中设置 r9 如下:

__asm volatile ("LDR r9, = 0x20000000");

但是我如何在内联汇编中设置普通 C 变量?

伪代码

__asm volatile ("MOV pxTopOfStack[9-4], R9"); // just trying to illustrate what I am looking for

复制粘贴了 developer.arm 中的示例并对其进行了修改。似乎有效!

__asm ("MOV %[result], R9"
    : [result] "=r" (pxTopOfStack[9-4])
  );