ARM基础学习-局部标号

局部标号主要用于在局部范围内使用。他由两部分组成:开头是一个0~99的数字,后面紧跟着一个通常表示该局部变量作用范围的符号。
局部变量的作用范围通常为当前段,也可以用伪操作ROUT来定义局部变量的作用范围。

    局部标号定义格式:N{routname}
    其中:N 局部标号,为0~99。
    routname 局部标号作用范围的名称,由ROUT 伪指令定义。
    局部标号引用格式:
    %{F|B}{A|T} N{routname}
    其中: % 表示局部标号引用操作。
    F 指示编译器只向前搜索
    B 指示编译器只向后搜索
    A 指示编译器搜索宏的所有嵌套层次
    T 指示编译器搜索宏的当前层

    如果F和B都没有指定,则编译器先向前搜索,再向后搜索。如果A和T 都没有指定,编译器搜索所有从宏的当前层次到宏的最高层次,比当前层次的层次不再搜索。
    如果指定了routname,编译器向前搜索最近的ROUT 伪指令,若routname 与该ROUT伪指令定义的名称不匹配,编译器报告错误,汇编失败。
memsetup:
    @ 设置存储控制器以便使用SDRAM等外设

    mov r1,     #MEM_CTL_BASE   @ 存储控制器的13个寄存器的开始地址
    adrl    r2, mem_cfg_val              @ 这13个值的起始存储地址
    add r3,     r1, #52                       @ 13*4 = 54
1:  
    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4
    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4
    cmp r1,     r3                 @ 判断是否设置完所有13个寄存器
    bne 1b                          @ 若没有写成,继续
    mov pc,     lr                 @ 返回

上面bne 1b 的意思是,如果r1!=r3 即r1的地址的不等于r3的地址,也就是还没设置完这13个寄存器,就要重新跳到:

1:  
    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4
    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4
    ......

处执行;直到r1=r3,即设置好这13个寄存器。才会结束这个局部循环。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值