2017-10-22 90 views
0

我在理解rlwinm PPC汇编指令时遇到了一些问题(旋转左边的字,然后和带有掩码)。32位PPC rlwinm指令

我试图扭转功能

rlwinm r3, r3, 0, 28, 28 

我已经知道什么是r3这部分。在这种情况下,r3是一个4字节的整数,但我不确定这个指令rlwinm对它做了什么。

顺便说一下,这是一个32位的机器。

+0

你看过指令集的参考吗?第一个零是移位,两个“28”操作数是掩码的开始和结束(这是一个'1'位的序列,因此显然不是值'28')。 – Jester

+0

[PowerPC指令集参考](http://www.ds.ewi.tudelft.nl/vakken/in1006/instruction-set/) –

回答

6

你的理解不是没错。由于每IBM link这个指令,你看到的形式是:

rlwinm <target=r3>, <source=r3>, <shift=0>, <begin-mask=28>, <end-mask=28> 

因此,没有实际移动参与。并且用于AND操作的实际掩码是从beginend掩码位置构建的,它没有作为明确参数(a)给出。

在这种情况下,由于两个位置是28,掩模是一个简单的单个比特,按照链接的页面(略转述):

如果开始-掩模值小于所述结束掩码值加1,则在起始点和结束点之间(包括起始点和结束点之间)的掩码位设置为1。所有其他位都设置为零。

因此,您所看到的说明不会比单一的AND操作更复杂。


(一)一个表单,允许你指定实际面膜(假设它是由连续1位),但它的 -argument版本,实际上只是语法糖汇编程序可以变成五个参数。