1. 指令csel
cmp x0, x1
csel x0, x0, x1, lt
上述可以写成伪代码:x0 = (x0<=x1)? x0 : x1;
cmp x0, x1
csel x0, x0, x1, gl
上述可以写成伪代码:x0 = (x0>=x1)? x0 : x1;
2. 指令sbfx和ubfx
sbfx x0, x1, #8, #4
ubfx x0, x1, #8, #4
两条指令相同点:
将x1的8,9,10,11这四位,赋值给x0的0,1,2,3的这四位
两条指令不同点:
sbfx指令要求x0的其他高位按照符号位扩展
ubfx指令要求x0的其他高位全部清零
3. 指令bic和orr
bic x0, x0, #imm
根据立即数#imm将寄存器x0的某些位清零(立即数#imm为1的位进行清零),其他位保持不变。
orr x0, x0, #imm
根据立即数#imm将寄存器x0的某些位置1(立即数#imm为1的位进行置1),其他位保持不变。