我在翻译以下 PowerPC 指令时遇到困难:
extrwi r12, r10, 8, 16
我一直假设这意味着:
r12 := (r10 << 24) AND 00000000000000000000000011111111
但这似乎不对。 任何人都可以验证这是否正确?谢谢:)
最佳答案
extrwi r12, r10, 8, 16
将提取 r10
起始位 16
的 8
位(其中位 0 是最高位(符号位)。
所以对于你的问题,你几乎是对的,除了它是向左旋转 24 而不是左移 24,然后与低 8 位的掩码进行 AND 运算(如 @EOF 提到的) ):
r12 := (r10 <rotate left by> 24) AND 00000000000000000000000011111111
立即提取并右对齐(Word):
参见 PowerPC ISA 第一册,第 14 页。第160页和第160页的解释74: https://www.ibm.com/developerworks/systems/library/es-archguide-v2.html
关于assembly - extrwi 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350342/