设为首页 加入收藏

TOP

4.1.5 ARM汇编器所支持的伪指令(1)
2013-10-12 06:54:57 来源: 作者: 【 】 浏览:86
Tags:4.1.5 ARM 汇编 支持 指令

4.1.5  ARM汇编器所支持的伪指令(1)

ARM伪指令不是ARM指令集中的指令,它们是一些特殊的指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,它们并不是在运行期间由机器执行,而是在汇编程序对源程序汇编期间由汇编程序处理,这些特殊指令助记符就被称作为伪指令。它们可以像其他ARM指令一样使用,但是在编译时这些指令将被等效的ARM指令取代。它们在源程序中的作用是为完成汇编程序作各种准备工作,也就是说这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了。

在ARM的汇编程序中,伪指令种类繁多,可以细分为如下几种。

符号定义伪(Symbol Definition)指令

数据定义伪(Data Definition)指令

汇编控制伪(Assembly Control)指令

宏指令

其他伪指令

1. 符号定义伪指令

符号定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等。常见的符号定义伪指令有如下几种。

用于定义全局变量的GBLA、GBLL和GBLS。

用于定义局部变量的LCLA、LCLL和LCLS。

用于对变量赋值的SETA、SETL、SETS。

为通用寄存器列表定义名称的RLIST。

下面我们详细介绍该类伪指令的语法格式及其功能。

(1) 用于定义全局变量的GBLA、GBLL和GBLS

功能:定义全局变量,并将其初始化。其中,

GBLA伪指令用于定义一个全局的数字变量,并初始化为0;

GBLL伪指令用于定义一个全局的逻辑变量,并初始化为F(假);

GBLS伪指令用于定义一个全局的字符串变量,并初始化为空。

语法:

  1. GBLA(GBLL和GBLS) 全局变量名 

下面是这类指令的一些使用实例。

如果想定义一个全局的数字变量,变量名为num,则可这样定义:

  1. GBLA  num;定义一个全局的数字变量,变量名为num 

将该变量赋值为0x0a,应该为:

  1. num  SETA  0x0a; 

定义一个变量名为str全局的字符串变量,应该这样:

  1. GBLS  str; 

如果想将该变量赋值为"hello",也可这样:

  1. str  SETS"hello"; 

(2) 用于定义局部变量的LCLA、LCLL和LCLS

功能:定义局部变量,并将其初始化。其中,

LCLA伪指令用于定义一个局部的数字变量,并初始化为0;

LCLL伪指令用于定义一个局部的逻辑变量,并初始化为F(假);

LCLS伪指令用于定义一个局部的字符串变量,并初始化为空。

语法:

  1. LCLA(LCLL或LCLS) 局部变量名 

它的使用与上一种类似。假如需要定义一个局部的数字变量,变量名为num1,可以这样定义:

  1. LCLA  num1; 

将该变量赋值为0xaa的格式应该如下:

  1. num1  SETA  0xaa; 

定义一个变量名为str1全局字符串变量,使用如下格式:

  1. LCLS  str1; 

与上面类似,将该变量赋值为"hello"的格式为:

  1. str1  SETS  "hello"; 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.1.5 ARM汇编器所支持的伪指令(.. 下一篇4.1.1 ARM汇编语言中的程序结构

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: