我在理解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操作的实际掩码是由beginend掩码位置构造的,没有将其作为显式参数(a)给出。

在这种情况下,由于两个位置均为28,因此根据链接的页面(略作释义),掩码只是一位。



因此,您所看到的指令仅比单个AND操作复杂。

(a)有一种形式可以让您指定实际的掩码(假设它由连续的一位组成),但这是四参数版本,实际上只是语法糖,汇编器可以将其转换为五参数之一。

10-01 20:45