ARM base instruction -- ldr

/*
 * ldr
 *
 * 从内存中读取数据到寄存器
 */

    LDR R2, [R0]    @ [R0] - 数据源地址来自于R0指向的内存地址
                    @ LDR操作:从R0指向的地址中取值放到R2中

    ldr r0, [r1]        // 将存储器地址为 r1 的字数据读入 r0

    ldr r0, [r1, r2]    // 将存储器地址为 r1 + r2 的字数据读入 r0
    ldr r0, [r1, #8]    // 将存储器地址为 r1 + 8 的字数据读入 r0

    ldr r0, [r1, r2]!    // 将存储器地址为 r1 + r2 的字数据读入 r0, 并将新地址 r1 + r2 写入 r1
    ldr r0, [r1, #8]!    // 将存储器地址为 r1 + 8 的字数据读入 r0, 并将新地址 r1 + 8 写入 r1

    ldr r0, [r1], r2    // 将存储器地址为 r1 的字数据读放寄存器 r0, 并将新地址 r1 + r2 写入 r1
    ldr r0, [r1, r2, lsl#2]!    // 将存储器地址为 r1 + r2 * 4 的字数据读入 r0, 并将新地址
                                // r1 + r2 * 4 写入 r1

    ldr r0, [r1], r2, lsl#2        // 将存储器地址为 r1 的字数据读入 r0, 并将新地址r1 + r2 * 4 写入 r1

    ldrb r0, [r1]        // 将存储器地址为 r1 的字节数据读入 r0, 并将 r0 的高 24 位清零.
    ldrb r0, [r1 , #8]    // 将存储器地址为 r1 + 8 的字节数据读入 r0, 并将 r0 的高 24 位清零.

    ldrh r0, [r1]        // 将存储器地址为 r1 的半字数据读入 r0, 并将 r0 的高 16 位清零.
    ldrh r0, [r1, #8]    // 将存储器地址为 r1 + 8 的半字数据读入 r0, 并将 r0 的高 16 位清零.
    ldrh r0, [r1, r2]    // 将存储器地址为 r1 + r2 的半字数据读入 r0, 并将 r0 的高 16 位清零.

    ldr r1,=4096    // r1 = 4096
    ldr r1,[r2,#4]  // 将地址为r2+4的内存单元数据读取到r1中去
    ldr r1,[r2]     // 将地址为r2的内存单元位数据读取到r1中去
    ldr r1,[r2],#4  // 将地址为r2的内存单元的数据读取到r1中,然后r2=r2+4

    [ldrb]    : 字节数据加载
    [ldrh]    : 半字数据加载    
    [strb]    : 字节数据存储
    [strh]    : 半字数据存储

    ldr        = 加载字,宽度四字节
    ldrh    = 加载无符号的半字,宽度两字节
    ldrsh    = 加载有符号的半字,宽度两字节
    ldrb    = 加载无符号的字节
    ldrsb    = 加载有符号的字节
    str        = 存储字,宽度四字节
    strh    = 存储无符号的半字,宽度两字节
    strsh    = 存储有符号的半字,宽度两字节
    strb    = 存储无符号的字节
    strsb    = 存储有符号的字节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值