关于ARM汇编中的标号的学习

 

标号的定义

        就是地址的表示符号,标号的操作,就相当于对其所表示的地址的操作。

        内部属性(编译时):段属性(属于哪个段),

                                          偏移量属性(相对于本段首地址的偏移量,16位无符号整数,单位字节),

                                          类型属性(标号和转移指令所处位置之间的距离

                                                           SHORT------段内,-128---127

                                                           NEAR--------段内,-32768~ 32767

                                       FAR  ---段外)

                                                           

          标号可以标示程序代码段的首地址(常用在指令前),

         也可以用于标示数据段的首地址(常用在处处理数据的伪代码前)。

         例如:程序代码段的标号

         code_mark  

                         mov  r0,r2

                        。。。。

                  数据代码段的标号

         data_mark1   DCW  12

                         map    0x100

         data_mark2  field 256

标号的分类

        1。 基于计数器PC偏移量的标号------通常是表示代码段的标号。

                             作用范围 :整个本源文件

                             对这些标号的操作的一些指令有

                             跳转指令   如 b  code_mark

                             装载伪指令     adr  r0,code_mark

                              注意: (1)伪指令ldr 并不是基于PC的 如 ldr  r0,=code_mark ,

                              它的执行顺序是,首先判断是否可用mov进行操作,如果操作数不符合mov操作

                             的规则,则ldr 文字池的操作。进行绝对地址的寻址

                                            (2)指令ldr  r0,code_mark 作用是将code_mark表示的地址中的内容

                              装载到r0中。

          2。基于寄存器的标号----------通常是对数据处理的伪代码前的标号。在汇编处理时,将寄存器的值

                              加上或者减去该标号,以达到的数据的访问 如(正确与否存有疑问!!!有待解决)

                              作用范围:本源文件

                               add  r0,r0,a

                               map  0x100

                               A  field  256

                               B field   256

         3。绝对地址  是一个32位的数字量,可以用来寻址整个内存空间,当程序计数器PC赋值时,可以

                              实现程序跳转。

                               作用范围:本源文件

                                ldr  pc,=0x30000000

         3。局部标号 0~99的十进制数字

                               作用范围:当前段内

                               引用格式 %{B|F}  N    注:B----搜索范围往后backward,F------搜索范围向前forward

                                                                         N----局部标号

                               0      

                                          cmp  ....    

                                          add 。。。

                                          b  %B0

                                          b  %F1

                                     ........

                               1

                                          ldr ....

 

另  对本源文件外部标号的引入 IMPORT  X(外部标号)

     对本源文件中的标号设定为可导出  EXPORT  Y(本源文件中的标号)

 

参考文献:http://blog.csdn.net/ce123/article/details/7181662

                  《ARM处理机裸机开发实践》-------王小强 等

                                         

                            

                                       

                          

        

        

       

                     

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值