繁体   English   中英

使用asm指令读取MIPS CPU寄存器

[英]Read MIPS CPU register using asm instruction

我想在我的assert函数中打印$ra (返回地址)寄存器,以进行调试。 我正在使用MIPS CPU。 我尝试了以下代码,但编译器不喜欢它:

unsigned int  RA;
unsigned int* pRA = &RA;
asm volatile("sw $ra, %0" : "=r" (pRA));

要么

static volatile unsigned int RA;
asm ("mov $ra, %0" : "=m"(RA));

我找到了有关内联/扩展程序集的GCC文档,但对我来说似乎不清楚。

以下任何一种都可以工作:

 unsigned int x;
 asm volatile ("move %0, $ra" : "=r" (x));
 asm volatile ("sw $ra, %0" : "=m" (x));

如果您坚持使用asm volatile ("sw $ra, %0" : "=m" (*pRA));指针值asm volatile ("sw $ra, %0" : "=m" (*pRA)); 是要走的路(没有取消引用,您将得到一个pRA最终将指向返回地址的指针,而不是将值存储在RA )。 您可以在GCC内联程序集HOWTO中阅读有关约束的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM