美文网首页
arm 汇编指令

arm 汇编指令

作者: 萌小菜 | 来源:发表于2021-04-19 17:00 被阅读0次

    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 汇编指令

          本文链接:https://www.haomeiwen.com/subject/vgzilltx.html