我在理解rlwinm
PPC汇编指令时遇到了一些麻烦(立即旋转左字并与掩码旋转)。
我正在尝试反转功能的这一部分
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,因此根据链接的页面(略作释义),掩码只是一位。
因此,您所看到的指令仅比单个
AND
操作复杂。(a)有一种形式可以让您指定实际的掩码(假设它由连续的一位组成),但这是四参数版本,实际上只是语法糖,汇编器可以将其转换为五参数之一。