现在的位置: 首页 > 综合 > 正文

ARM伪指令

2018年04月11日 ⁄ 综合 ⁄ 共 1535字 ⁄ 字号 评论关闭


在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。    
 
    在
ARM 的汇编程序中,有如下几种伪指令:
符号定义伪指令数据定义伪指令汇编控制伪指令宏指令以及其他伪指令

    符号定义( Symbol Definition )伪指令   
    符号定义伪指令用于定义 ARM 汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。   
    常见的符号定义伪指令有如下几种:   
    — 用于定义全局变量的 GBLA 、 GBLL 和 GBLS 。   
    — 用于定义局部变量的 LCLA 、 LCLL 和 LCLS 。   
    — 用于对变量赋值的 SETA 、 SETL 、 SETS 。   
    — 为通用寄存器列表定义名称的 RLIST 。   
    1、 GBLA、GBLL 和GBLS   
    语法格式:   
    GBLA ( GBLL 或 GBLS ) 全局变量名   
    GBLA 、 GBLL 和 GBLS 伪指令用于定义一个 ARM 程序中的全局变量,并将其初始化。其中:   
    GBLA 伪指令用于定义一个全局的数字变量,并初始化为 0 ;   
    GBLL 伪指令用于定义一个全局的逻辑变量,并初始化为 F (假);   
    GBLS 伪指令用于定义一个全局的字符串变量,并初始化为空;   
    由于以上三条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一。   
    使用示例:   
    GBLA Test1 ;定义一个全局的数字变量,变量名为 Test1   
    Test1 SETA 0xaa ;将该变量赋值为 0xaa   
    GBLL Test2 ;定义一个全局的逻辑变量,变量名为 Test2   
    Test2 SETL {TRUE} ;将该变量赋值为真   
    GBLS Test3 ;定义一个全局的字符串变量,变量名为 Test3   
    Test3 SETS “ Testing ” ;将该变量赋值为 “ Testing ”  
 
    2、 LCLA、LCLL 和LCLS   
    语法格式:   
    LCLA ( LCLL 或 LCLS ) 局部变量名   
    LCLA 、 LCLL 和 LCLS 伪指令用于定义一个 ARM 程序中的局部变量,并将其初始化。其中:   
    LCLA 伪指令用于定义一个局部的数字变量,并初始化为 0 ;   
    LCLL 伪指令用于定义一个局部的逻辑变量,并初始化为 F (假);   
    LCLS 伪指令用于定义一个局部的字符串变量,并初始化为空;   
    以上三条伪指令用于声明局部变量,在其作用范围内变量名必须唯一。   
    使用示例:   
    LCLA Test4 ;声明一个局部的数字变量,变量名为 Test4   
    Test3 SETA 0xaa ;将该变量赋值为 0xaa   
    LCLL Test5 ;声明一个局部的逻辑变量,变量名为 Test5   
    Test4 SETL {TRUE} ;将该变量赋值为真   
    LCLS Test6 ;定义一个局部的字符串变量,变量名为 Test6   
    Test6 SETS “ Testing ” ;将该变量赋值为 “ Testing ”   

    3、 SETA、SETL 和SETS   
    语法格式:   
    变量名 SETA ( SETL 或 SETS ) 表达式   
    伪指令 SETA 、 SETL 、 SETS 用于给一个已经定义的全局变量或局部变量赋值。   
   

抱歉!评论已关闭.