代码之家  ›  专栏  ›  技术社区  ›  Crashworks

什么是MTMSREE PowerPC op?

  •  2
  • Crashworks  · 技术社区  · 15 年前

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

    mfmsr 很明显,它正在把一些东西转移到机器状态寄存器,但我不知道那是什么 ee 后缀的意思应该是。它一定是某种可爱的微软昵称,PPC文档称之为不同的op。

    3 回复  |  直到 15 年前
        1
  •  4
  •   luke h    15 年前

    该指令是mtmsrd指令的扩展形式,设置了L位(0x00010000)。它只修改EE(外部中断启用)和RI(可恢复中断)BTI,而不是修改整个MSR。它比mtmsrd L=0快,因为它执行同步而不是上下文同步。这是一条特权指令,因此将导致操作系统出现异常,并且仍然很慢。

    IBM的第三册:PowerPC操作环境体系结构v2.02(第91页)中有关于这一点的公开文档, http://www.ibm.com/developerworks/power/library/pa-archguidev2/?S_TACT=105AGX16&S_CMP=LP

    • 卢克H
        2
  •  0
  •   Andrew Klossner Andrew Klossner    15 年前

    mtmsr指令的21:30位是0010,而不是001011010。

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

        3
  •  0
  •   Crashworks    13 年前

    我把指令的机器代码拆开了( 011111 01101 00001 00000 0010110010 0 )结果证明 mtmsree 其他人都这么叫 mtmsrd .