the*_*dev 2 c++ assembly reverse-engineering powerpc instruction-set
我在理解rlwinmPPC汇编指令时遇到了一些麻烦(旋转左字立即然后和屏蔽).
我试图扭转这部分功能
rlwinm r3, r3, 0, 28, 28
Run Code Online (Sandbox Code Playgroud)
我已经知道是什么了r3.r3在这种情况下是一个4字节的整数但我不确定这条指令到底rlwinm是做什么的.
顺便说一下,这是在32位机器上.
你的理解不太对.根据此指令中的IBM链接,您看到的表单是:
rlwinm <target=r3>, <source=r3>, <shift=0>, <begin-mask=28>, <end-mask=28>
Run Code Online (Sandbox Code Playgroud)
因此,不涉及实际的转变.并用于实际的面具AND操作从构造begin和end面膜的位置,它没有给出一个明确的说法(一).
在这种情况下,由于两个位置都是28,因此根据链接页面(略微复述),掩码只是一个位:
如果begin-mask值小于end-mask值加1,则起始点和结束点之间的掩码位设置为1.所有其他位都设置为零.
因此,您所看到的指令并不比单个AND操作复杂.
(一)有是一个表单,允许你指定实际面膜(假设都是由连续的单位),但它的4个 -argument版本,实际上只是语法糖汇编程序可以变成五参数之一.