我查了一下,没有什么能解释清楚。它说rlwimi可以用来代替它,但我也不知道那个指令。
在那里编写代码:
andi. r0, r6, 3 # while(r6 != 3)
bdnzf eq, loc_90014730 # if(CTR != 0) loc_90014730();
insrwi r4, r4, 8,16 # ????
srwi. r0, r5, 4 # r0 = r5 >> 4;
insrwi r4, r4, 16,0
(r4 == 0)
我已经被困在这条指令上一段时间了。请不要给我结果,请给我一个详细的解释。
答案 0 :(得分:3)
我认为你需要用rlwimi做一些实验来向自己完全解释,但这是我觉得有用的。
rlwimi的Power PC编程手册第1册中有一个编程说明,它提供了有关inslwi和insrwi的更多细节:
rlwimi可用于插入左对齐的n位字段 寄存器RS的低32位,从位开始进入RAL 位置b,通过设置SH = 32-b,MB = b,并且ME =(b + n)-1。它可以使用 插入在低位32中右对齐的n位字段 寄存器RS的位,通过设置从位位置b开始进入RAL SH = 32-(b + n),MB = b,ME =(b + n)-1。
它还有助于比较insrwi和inslwi的结果。以下是跟踪rlwimi过程的两个示例,其中r4 = 0x12345678。
insrwi r4,r4,8,16相当于rlwimi r4,r4,8,16,23
因此insrwi从右侧获取n位(从第32位开始)并从位b开始将它们插入目标寄存器。
inslwi r4,r4,8,16相当于rlwimi r4,r4,16,16,23
因此inslwi从左侧获取n位(从位0开始)并从位b开始将它们插入目标寄存器。
答案 1 :(得分:0)
PowerISA 2.07 [1]声明insrwi是rlwimi的延伸助记符,具有相同的rlwimi指令以及它们是如何相关的。 PowerISA可能具有您想要的细节级别。 :)
[1] https://www.power.org/documentation/power-isa-version-2-07/(或google,pdf)