Ami*_*mar 3 c assembly powerpc inline-assembly
我在PowerPc的内核源代码片段下面有这个代码片段
#define SPRN_IVOR32 0x210 /* Interrupt Vector Offset Register 32 */
unsigned long ivor[3];
ivor[0] = mfspr(SPRN_IVOR32);
#define __stringify_1(x) #x
#define __stringify(x) __stringify_1(x)
#define mfspr(rn) ({unsigned long rval; \
asm volatile("mfspr %0," __stringify(rn) \
: "=r" (rval)); rval; })
Run Code Online (Sandbox Code Playgroud)
另外,上面的练习是关于在PowerPc中模拟MSR寄存器的位吗?
任何人都可以帮我确切地说我们在这里做了什么?
的mfspr宏生成asm指令mfspr它读取给定的专用寄存器到由编译器,其然后被分配到所选择的寄存器rval,因此成为表达的返回值.
正如评论所说,SPRN_IVOR32是Interrupt Vector Offset Register 32,其内容因此被提到ivor[0].