PowerPC 汇编语言
1 条件寄存器,比较指令 转移指令 条件转移指令
CR(Condition Register) 一共32位,从低位到高位被分成 CR0-CR7八段,每段四位。每个四位的CRn从低到高分别是:LT(小于标志)、GT(大于)、EQ(等于)和SO(溢出)比较指令或条件跳转指令均 可指明具体操作哪个 CRn,由此可以同时判断多个条件。整数计算默认更改CR0,浮点数计算默认更改CR1
比较指令 :
cmpw rA, rB (比较有符号)cmpwl rA, rB(无符号)cmpwi rA, IMM(立即数比较)
cmpw rA, rB 比较 rA, rB的低32位结果存cr0
cmpd rA, rB 比较 rA, rB的全64位结果存cr0
cmpw cr3, rA, rB 比较 rA, rB的低32位结果存cr3
转移指令 :
b(branch) 是绝对地址无条件跳转,ba 是相对地址无条件跳转,bl 是跳转前将下一条指令的地址记录到register LR 可以用blr跳转到LR所指地址) ,BLA 是相对地址跳转,并将下条指令地址记录地址到LR。
条件跳转指令 :
blt addr (小于跳转),ble(小于等于)
bgt addr(大于跳转),bge(大于等于)
beq addr(等于跳转),bne(不等)
Tips :可以在比较和跳转命令第一个参数指明所使用的条件寄存器,不写则默认CR0。由此我们可以用更多条件寄存器同时判断若干条件
cmpw cr4, r3, r4
beq cr4, _branch_1