2009-09-28 47 views
2

我正在查看使用MSVC编译的(Xenon)PowerPC可执行文件的核心转储。我正在调试的函数有一个操作,MSVC反汇编程序调用mtmsree r13mtmsree不在PPC的IBM文档中;这个操作是做什么的?什么是MTMSREE PowerPC操作?

它紧跟在mfmsr之后,显然它正在将某些东西移动到机器状态寄存器中,但我不知道后缀应该是什么意思。它必须是某种可爱的微软绰号,PPC文档称之为不同的东西。

回答

4

该指令是具有L位置1(0x00010000)的mtmsrd指令的扩展形式。它只修改EE(外部中断使能)和RI(可恢复中断)btis,而不是修改整个MSR。它比mtmsrd L = 0更快,因为它执行同步而不是上下文同步。这是一个特权指令,所以会导致os异常,并且仍然很慢。

有这个公开文件中IBM的第三篇:PowerPC的操作环境架构V2.02(91页),http://www.ibm.com/developerworks/power/library/pa-archguidev2/?S_TACT=105AGX16&S_CMP=LP

  • 卢克^ h
0

我挑选了指令的机器代码(011111 01101 00001 00000 0010110010 0),事实证明mtmsree是其他人只需拨打mtmsrd

的mtmsr指令
0

位21:30是0010010010,不是0010110010.

我的猜测是,mtmsree是一个特定的氙指令只设置EE位在MSR。 Book E机器具有wrtee和wrteei指令来执行此操作。我希望我知道在哪里可以找到氙气PEM。

+0

我的坏 - 0010110010是mtmsrd,不mtmsr(即64位版本)。但是,如果您在IBM文档中搜索mtmsrd,它只会将您带到MTMSR。 – Crashworks 2009-09-28 23:48:07

+0

据我所知,相关的PEM只是IBM的“PowerPC微处理器系列:用于64位和32位微处理器的编程环境手册”。但是MSFT喜欢发明自己的古怪小代号。 – Crashworks 2009-09-28 23:50:16