我正在使用 PowerPC 的 Diab C 编译器 (v5.9.4),我需要将通用寄存器的内容复制到函数的局部变量中。
是否有任何示例说明如何读取 GPR 并将其值移动到 C 中的变量中?
您提到的编译器可能是 Clang 或 GCC 的变体。您可以编写内联汇编,如下所示:
// Read from GPR, change the '0' to the GPR you'd want
unsigned long gprv;
asm volatile("mr %0, 0" : "=r"(gprv));
// Writing to GPR
// Thanks Peter Cordes for pointing out clobber list
asm volatile("mr 0, %0" : : "r"(gprv) : "0");