我正在查看使用MSVC编译的(Xenon)PowerPC可执行文件的核心转储。我正在调试的函数有一个MSVC反汇编程序调用{{1}}的操作。 mtmsree r13
不在PPC的IBM文档中;这个操作是做什么的?
它紧跟在mtmsree
之后,显然它正在向机器状态寄存器移动,但我不知道那个mfmsr
后缀是什么意思。对于PPC文档称之为不同的操作,它必须是某种可爱的微软昵称。
答案 0 :(得分:4)
该指令是mtmsrd指令的扩展形式,其L位设置(0x00010000)。它不是修改整个MSR,而是仅修改EE(外部中断使能)和RI(可恢复中断)btis。它比mtmsrd L = 0更快,因为它执行同步而不是上下文同步。这是一个特权指令,因此会导致操作系统异常,并且。:仍然很慢。
在IBM的Book III中有公开文档:PowerPC Operating Environment Architecture v2.02(第91页),http://www.ibm.com/developerworks/power/library/pa-archguidev2/?S_TACT=105AGX16&S_CMP=LP
答案 1 :(得分:0)
我选择了指令的机器代码(011111 01101 00001 00000 0010110010 0
),结果发现mtmsree
是其他人只是调用mtmsrd
的内容。
答案 2 :(得分:0)
mtmsr指令的21:30位是0010010010,而不是0010110010。
我的猜测是mtmsree是一个特定于Xenon的指令,它只设置MSR中的EE位。 Book E机器有wrtee和wrteei指令来做到这一点。我希望我知道在哪里可以找到氙气PEM。