arm 汇编指令

https://8biiit.github.io/2019/09/04/Arm%E6%8C%87%E4%BB%A4/

CSEL

替代方案是使用一组新的指令,包括CSEL(Conditional Select), CINC(Conditional Increase)和CSET(Conditional Set)等,以CSEL为例,它的用法是这样的:

CSEL <Xd>, <Xn>, <Xm>, <cond>
意思是如果条件(cond)满足,就选择(sel)Xn作为Xd,否则选择Xm作为Xd。比如下面这条语句:

CSEL X0, X0, X1, ge

表示的是如果X0>=X1(ge - greater or equal),那么X0=X0(保持不变),否则X0=X1。虽然比IT指令块的语法看起来要直观一些,但比起IT指令块能表达的层级关系,还是稍微弱了一点。

mov

mov 寄存器、 立即数 mov r0,#0x1 r0 = 0x1
mov 寄存器、 寄存器 mov r2, r1 r2 = r1

movz movk

https://stackoverflow.com/questions/53268118/whats-the-difference-between-mov-movz-movn-and-movk-in-armv8-assembly
instruction value of x0
mov x0, #0x1f88 | 0x1f88
movk x0, #0xb7fb, lsl #16 | 0xb7fb1f88
movk x0, #0x7f, lsl #32 | 0x7fb7fb1f88

ADD

;ADD加法指令
mov r0, #1
mov r1, #1
add r2, r1, r0  ;r2 = r1 + r0
add r2, r1, #2  ;r2 = r1 + 2
;ADC带进位加法指令,即除了加两个数以外,还要把CPSR的C值也要带进来
ADDS R0,R1,R2; R0=R1+R2,ADDS中S表示把进位结果写入CPSR
ADC R5,R3,R4 ;R5=R3+R4+C

SUB

;SUB减法指令
mov r0, #5
mov r1, #3
sub r2, r0, r1  ;r2 = r0 - r1
sub r2, r1, #2  ;r2 = r1 - 2
;SBC带进位减法指令,即除了加两个数以外,还要把CPSR的C值也要带进来,类似ADC
SUBS R0,R1,R2; R0=R1-R2,SUBS中S表示把进位结果写入CPSR
SBC R5,R3,R4 ;R5=R3-R4-C

AND 与操作

AND R0,R1,R2; R0=R1 & R2
AND R0,R1,#0xFF ;R0=R1 & 0xFF

ORR 或操作

ORR R0,R1,R2; R0=R1 | R2
ORR R0,R1,#0xFF ;R0=R1 | 0xFF

MADD

MADD Rd, Rn, Rm, Ra => Rd = Ra + Rn * Rm

MSUB

MSUB Rd, Rn, Rm, Ra => Rd = Ra - Rn * Rm

SMADDL

https://developer.arm.com/documentation/100076/0100/a64-instruction-set-reference/a64-general-instructions/smaddl?lang=en
Signed Multiply-Add Long multiplies two 32-bit register values, adds a 64-bit register value, and writes the result to the 64-bit destination register.
SMADDL Xd, Wn, Wm, Xa
Xd = Xa + Wn * Wm.

LSR

LSR(Logical shift right),逻辑右移或者说是无符号的右移。LSR #n操作可以对寄存器的内容进行逻辑右移n位,左边被移走的n位全部被清零
MOV R1,#0X80000001
LSR R0,R1,#3; R0 = (unsigned)R1>> 3

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ARM汇编指令编程之寄存器中数据调换顺序 题目:将R0中的数据调换顺序;例如:R0=0XAABBCCDD调换顺序后...
    HurryChen阅读 1,146评论 0 0
  • 1.跳转指令 B 无条件跳转 BL 带链接的无条件跳转 BX 带状态切换的无条件跳转 根据目标地址最低位切换...
    vipzher阅读 659评论 0 1
  • ARM汇编指令编程之选择排序 题目:将整数数组{0XAABBCC11,0XAABBCC00,0XAABBCC33,...
    HurryChen阅读 2,094评论 0 0
  • 许多A32和T32的一般数据处理具有灵活的第二操作数(Operand2)。比如下面MOV这条指令:MOV{S}{c...
    赵国开阅读 11,520评论 0 4
  • ARM汇编指令编程之内存单元填入整数并累加 题目:对内存地址0X3000开始的100个字内存单元填入0X10000...
    HurryChen阅读 1,094评论 0 0