接着上文,接着讲一下算术与移位指令,想要系统学习arm64指令的朋友们,添加一个关注,后面会持续更新的
条件操作码
加法指令
普通的加法指令有下面几种用法。
使用立即数的加法。
使用寄存器的加法。
使用移位操作的加法。
1、使用立即数的加法指令
ADD <Xd|SP>,<Xn|SP>,#<imm>{,<shift>}
它的作用是把Xn/SP寄存器的值再加上立即数imm(0~4095),把结果写入Xd/SP寄存器里。Shift为0或12
2、使用寄存器的加法指令
ADD <Xd|SP>,<Xn|SP>,<R><m>{, <extend> {#<amount>}}
这条指令的作用是先把Rm寄存器做一些扩展,例如左移操作,然后再加上Xn/SP寄存器的值,把结果写入Xd/SP寄存器中
3、使用移位操作的加法指令
ADD <Xd>, <Xn>, <Xm>{, <shift> #<amount>}
这条指令的作用是先把Xm寄存器做一些移位操作,然后再加上Xn寄存器的值,结果写入Xd寄存器中。amount 0~63
4、ADDS指令
ADDS指令是ADD指令的变种,唯一的区别是指令执行结果会影响PSTATE寄存器的N、Z、C、V标志位,例如当计算结果发生无符号数溢出时,C=1。
5、ADC指令
ADC <Xd>, <Xn>, &