PowerPC汇编文件中全局变量的定义与使用



我想保存SPR(特殊用途寄存器)的内容到一个全局变量。我没有太多的汇编经验,但我试着这样做:

.global __The_Global_Variable
mfspr    r16, 695  #695 is the number of the SPR Register
stw      r16, __The_Global_Variable #I get Syntax error at this line

我得到一个语法错误,所以谁可以帮助在那吗?

我还有以下问题:

1-如何在汇编文件中定义全局变量?

将寄存器的内容存储在变量中的正确指令是什么?

您可以使用内联asm指令来完成此操作。例如,以下是如何在PPC64系统上获得非特权DSCR的方法:

#include <stdio.h>
int spr_val;
int main(int argc, char ** argv) {
    asm ("mfspr %0, 3"
         : "=r" (spr_val)
         : : );
    printf("DSCR is %xn", spr_val);
    return 0;
}

这可以正常工作-通过使用ppc64_cpu:

设置DSCR来验证
dja@dja-builder ~/e/foo> make foo
cc     foo.c   -o foo
dja@dja-builder ~/e/foo> sudo ppc64_cpu --dscr=0
dja@dja-builder ~/e/foo> ./foo 
DSCR is 0
dja@dja-builder ~/e/foo> sudo ppc64_cpu --dscr=6
dja@dja-builder ~/e/foo> ./foo 
DSCR is 6

相关内容

  • 没有找到相关文章

最新更新