• ARM汇编中的标号


        标号(LABEL)是为一组机器指令所起名字,表示程序中的指令或者数据地址的符号。标号可有可无,只有当需要用符号地址来访问该语句时,才给此语句赋予标号。通过在目标地址的前面放上一个标号,可以在指令中使用标号来代替直接使用地址。标号是程序目标标志,总是和某地址相联系,供转移或循环指令控制转移使用。 标号是编译程序使用的,也就是说程序中最后生成的代码中标号都换成了相应的数值。

        因标号表示是指令地址,所以它有三个属性,即段属性、偏移属性和类型属性。段属性即段地址,标号段必须在CS中。偏移属性是表示该标号到段首地址距离,单位是字节,是16位无符号整数。类型属性是距离属性,指标号和转移指令距离,该标号在本段内引用,距离在-128~ 127之间时称短标号,距离属性为SHORT,当标号在本段,距离在-32768~ 32767之间时称近标号,距离属性为NEAR,当引用标号指令和标号不在同一段时称远标号,距离属性为FAR。

    根据标号的生成方式可分为3种:

    1.基于PC的标号

    基于PC的标号是位于目标指令前或者程序中数据定义伪操作前的标号。这种标号在汇编时将被处理成PC值加上(或减去)一个数字常量。常用于表示跳转指令的目标地址,或者代码段中所嵌入的少量数据。

    2.基于寄存器的标号

    基于寄存器的标号常用MAP和FIELD未定义操作,也可以该用EQU伪定义。这种标号在汇编时将被处理成寄存器的值加上(或减去)一个数据常量。常用于访问数据段中的数据。

    3.绝对地址

    绝对地址是一个32位数据。它可以寻址2的32次方 -1,即直接可以寻址整个内存空间。

  • 相关阅读:
    静态代理模式
    反射+抽象工厂
    抽象工厂模式
    工厂方法模式
    简单工厂模式
    单例模式
    博客总览
    Bootstrap快速上手 --作品展示站点
    Java 网络编程---分布式文件协同编辑器设计与实现
    如何在博客园的博客中添加可运行的JS(转载)
  • 原文地址:https://www.cnblogs.com/getyoulove/p/3675748.html
Copyright © 2020-2023  润新知