0
我在理解rlwinm
PPC汇编指令时遇到了一些问题(旋转左边的字,然后和带有掩码)。32位PPC rlwinm指令
我试图扭转功能
rlwinm r3, r3, 0, 28, 28
我已经知道什么是r3
这部分。在这种情况下,r3
是一个4字节的整数,但我不确定这个指令rlwinm
对它做了什么。
顺便说一下,这是一个32位的机器。
我在理解rlwinm
PPC汇编指令时遇到了一些问题(旋转左边的字,然后和带有掩码)。32位PPC rlwinm指令
我试图扭转功能
rlwinm r3, r3, 0, 28, 28
我已经知道什么是r3
这部分。在这种情况下,r3
是一个4字节的整数,但我不确定这个指令rlwinm
对它做了什么。
顺便说一下,这是一个32位的机器。
你的理解不是挺没错。由于每IBM link这个指令,你看到的形式是:
rlwinm <target=r3>, <source=r3>, <shift=0>, <begin-mask=28>, <end-mask=28>
因此,没有实际移动参与。并且用于AND
操作的实际掩码是从begin
和end
掩码位置构建的,它没有作为明确参数(a)给出。
在这种情况下,由于两个位置是28,掩模是一个简单的单个比特,按照链接的页面(略转述):
如果开始-掩模值小于所述结束掩码值加1,则在起始点和结束点之间(包括起始点和结束点之间)的掩码位设置为1。所有其他位都设置为零。
因此,您所看到的说明不会比单一的AND
操作更复杂。
(一)有是一个表单,允许你指定实际面膜(假设它是由连续1位),但它的 -argument版本,实际上只是语法糖汇编程序可以变成五个参数。
你看过指令集的参考吗?第一个零是移位,两个“28”操作数是掩码的开始和结束(这是一个'1'位的序列,因此显然不是值'28')。 – Jester
[PowerPC指令集参考](http://www.ds.ewi.tudelft.nl/vakken/in1006/instruction-set/) –