zoukankan      html  css  js  c++  java
  • ARM寻址

    ARM几种寻址方式

    立即数寻址

    寄存器寻址

    寄存器间接寻址

    基址寻址

    相对寻址

    堆栈寻址

    块拷贝寻址

     

     

    • 立即数寻址

    1 SUBS  R0,R0,#1   ;R0 =R0 -1 ,结果放入R0(第一个R0寄存器)
    2 
    3 MOV  R0,#0xFF    ;R0 立即数0xFF装入R0

        立即数寻址,把立即数直接编码到opcode(指令编码当中),在可能有

     

    • 寄存器寻址

    MOV    R1,R2        ;R2 = R1
    
    SUB    R0,R1,R2    ;R0 = R1 - R2

      

      操作的是寄存器中的数据,可能会用在一些变量之间的中间运算过程。

    • 寄存器间接寻址

    LDR    R0, [R1]        ;R0 <-- mem32[R1]
    
    STR    R0, [R1]        ;mem32[R1] <-- R0

      

      ARM的数据传送指令都是基于这种方式的,通过Load、Store 完成对(内存)数据的存取,全局变量的存取。

    • 基址寻址

    LDR    R2, [R3, #0x0C]        ;R2 <-- mem32[R3+0x0C]
    
    STR     R1, [R0,#-2]             ;R1 --> mem32[R0 - 2]
    
    LDR    R1, [R0, R3, LSL #1]  ;R1 <-- mem32[R0 + R3*2]
    
    ;前索引寻址----------------------------------------------------------------
    
    LDR    R0, [R1, #4]               ;R0 <-- mem32[R1+4]
    
    LDR    R0, [R1, #4]!              ;R0 <-- mem32[R1+4] ,R1 =R1 +4
                                                ; ! 表示在完成数据传送后将更新基址寄存器
    ;后索引寻址----------------------------------------------------------------
                                            
    LDR    R0, [R1], #4                ;R0 <-- [R1], R1 = R1+4            

      像对数组的寻址应该就是这种的了吧

    • 相对寻址

      

    BL    SUBR1            ;跳转到其他位置的时候使用
    ;--------------------------------------------------------
    
    BEQ    LOOP            ;跳转到标号也是这种方式

      

      这种寻址方式和x86里面的E8,E9是差不多的,使用的是偏移量作为跳转的位置。猜想是不是会对当前PC加上一个相对偏移然后跳转这种的。

    • 堆栈寻址

    STMFD   SP!,{R1-R7, LR}    ;寄存器R1到R7,LR都入栈
    
    LDMFD   SP!,{R1-R7,LR}     ;寄存器R1到R7,LR都出栈

     

     R13 即是SP指针

    • 堆栈寻址

    ; IA 存后加    IB 存前加    DA 存后减 DB 存前减
    
    STMIA    R9!, {R0, R1, R5}
    
    ;第一步 mem32[R9] <-- R0, R9 = R9 +4
    
    ;第一步 mem32[R9] <-- R0,  R9 = R9 +4
    
    ;第一步 mem32[R9] <-- R0,  R9 = R9 +4
  • 相关阅读:
    hdu 3790 最短路径问题
    hdu 2112 HDU Today
    最短路问题 以hdu1874为例
    hdu 1690 Bus System Floyd
    hdu 2066 一个人的旅行
    hdu 2680 Choose the best route
    hdu 1596 find the safest road
    hdu 1869 六度分离
    hdu 3339 In Action
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/Lnju/p/4376349.html
Copyright © 2011-2022 走看看