• ARM LOAR-STORE指令


    变址模式 数据 基址寄存器 示例
    回写前变址 mem[base+offset] 基址寄存器加上偏移 LDR r0,[r1,#4]!
    前变址 mem[base+offset] 不变 LDR r0,[r1,#4]
    后变址 mem[base] 基址寄存器加上偏移 LDR r0,[r1],#4

    PRE

    r0=0x00000000
    r1=0x00009000
    mem32[0x00009000]=0x01010101
    mem32[0x00009004]=0x02020202

    回写前变址:

    LDR r0,[r1,#4]!

    POST(1)

    r0=0x02020202
    r1=0x00009004

    前变址:

        LDR r0,[r1,#4]

    POST(2)

    r0=0x02020202
    r1=0x00009000

    后变址:

        LDR r0,[r1],#4

    POST(3)

        r0=0x01010101
        r1=0x00009004
    寻址模式 指令 r0= r1+=
    回写前变址

    LDR r0,[r1,#4]!

    LDR r0,[r1,r2]!

    LDR r0,[r1,r2,LSR#4]!

    mem32[r1+0x4]

    mem32[r1+r2]

    mem32[r1+(r2 LSR 0x4)]

    0x4

    r2

    (r2 LSR 0x4)

    前变址

    LDR r0,[r1,#4] 

    LDR r0,[r1,r2]

    LDR r0,[r1,-r2,LSR#4]

    mem32[r1+0x4]

    mem32[r1+r2]

    mem32[r1-(r2 LSR 0x4)]

    0

    0

    0

    后变址

    LDR r0,[r1],#4

    LDR r0,[r1],r2

    LDR r0,[r1],r2,LSR#4

    mem32[r1]

    mem32[r1]

    mem32[r1]

    0x4

    r2

    (r2 LSR 0x4)

    多寄存器:

    <LDM|STM>{<cond>}<寻址模式>Rn{!},<Registers>{r^}
    寻址模式 描述 起始地址 结束地址 Rn!
    IA 执行后增加 Rn Rn+4*N-4 Rn+4*N
    IB 执行前增加 Rn+4 Rn+4*N Rn+4*N
    DA 执行后减少 Rn-4*N+4 Rn Rn-4*N
    DB 执行前减少 Rn-4*N Rn-4 Rn-4*N
    r0=0x00080010
    
        LDMIA=r0!,{r1-r3}
             0x00080020       0x00000000b
        ---->0x0008001C       0x00000000a  
             0x00080008       0x000000009---->r3
             0x00080004       0x000000008---->r2
    r0  ---->0x00080010       0x000000007---->r1
             0x0008000C       0x000000006
    
        LDMIB=r0!,{r1-r3}
             0x00080020       0x00000000b
        ---->0x0008001C       0x00000000a---->r3  
             0x00080008       0x000000009---->r2
             0x00080004       0x000000008---->r1
    r0  ---->0x00080010       0x000000007
             0x0008000C       0x000000006
    
        LDMDA=r0!,{r1-r3}
             0x00080020       0x000000005
        ---->0x0008001C       0x000000004---->r3  
             0x00080008       0x000000003---->r2
             0x00080004       0x000000002---->r1
    r0  ---->0x00080010       0x000000001
             0x0008000C       0x000000000
  • 相关阅读:
    理解OAuth 2.0
    asp.net core webapi/website+Azure DevOps+GitHub+Docker
    ASP.NET Core分布式项目实战
    Docker 在 centos 7上升级
    35.Docker安装Mysql挂载Host Volume
    34.Docker安装Mysql参数及环境变量使用
    33.Docker安装Mysql及用户配置
    32.Docker安装MongoDb
    如何用Spring Boot自定义Banner
    如何实现JDK10的新特性:var泛型和多个接口,案例详解
  • 原文地址:https://www.cnblogs.com/YYPapa/p/6855745.html
Copyright © 2020-2023  润新知