我在翻译以下 PowerPC 指令时遇到困难:
extrwi r12, r10, 8, 16
我一直假设这意味着:
r12 := (r10 << 24) AND 00000000000000000000000011111111
但这似乎不对。
任何人都可以验证这是否正确?谢谢 :)

最佳答案

extrwi r12, r10, 8, 16 将提取 8 起始位 r1016 位(位 0 是最高位(符号位))。

所以对于你的问题,你几乎是对的,除了它是向左旋转 24 而不是向左移动 24,然后与低 8 位的掩码(如@EOF 提到的):

r12 := (r10 <rotate left by> 24) AND 00000000000000000000000011111111

提取和右对齐(字)立即:

请参阅 PowerPC ISA 第一册,第 1 页。 160 和第 15 页的解释。 74:
https://www.ibm.com/developerworks/systems/library/es-archguide-v2.html

关于assembly - extrwi 是如何工作的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29350342/

10-12 16:01