PowerPC指令cmplw
是什么意思,我在这里如何反转它就是这条线。
cmplw cr6, r31, r10 ----------- r31 = 80 and r10 = 0
请快速告诉我如何扭转这条指令:)
答案 0 :(得分:2)
比较寄存器r31和r10的内容以确定它们是否大于,小于,等于或是否存在汇总溢出条件,并将结果放入条件寄存器(CR)字段6中。 CR字段位根据PowerPC用户ISA书1中的3.3.9定点比较指令设置。本例中的CR字段为6,并且这些字段编号为字段0为0-3位,字段1为4 -7,依此类推。所以CR字段6是条件寄存器的24-27位,你可以在那里找到大于,小于等的结果。
CR字段最常用于分支指令(如bne,beq,blt等)以作出流决策。如果没有基于CR字段做出决定的下一个相关指令,则很难用C编写代码来说明该指令的作用。我会说C代码的最佳估计是“r31 == r10”,“r31> = r10”,“r31< r10”等等,我无法确定比较运算符。我也无法确定它是“if”,“switch”,还是基于当前信息进行的条件操作。这一切都取决于使用CR字段6的内容的下一个相关指令。如果下一个相关指令是CR6上的beq,那么我希望C代码可以是条件,如“if(r31 == r10)”。有很多种可能性。