马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
符号定义伪操作用于定义ARM汇编程序中的变量,对变量进行赋值以及定义寄存器名称。 (1)
GBLA、GBLL及GBLS GBLA、GBLL及GBLS伪操作作用于声明一个ARM程序中的全局变量,并在默认情况下将其初始化。 GBLA伪操作声明一个全局的算数变量,并将其初始化成0. GBLL伪操作声明一个全局的逻辑变量,并将其初始化{FALSE}. GBLS伪操作声明一个全局的字符串变量,并将其初始化成空串“”。 语法格式 <GBLX> Variable 其中:<GBLX>是GBLA、GBLL或GBLS 3种伪操作之一;Variable是全局变量的名称。在其作用范围内必须惟一,即同一个变量名只能在作用范围内出现一次。 使用说明 如果这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成第2次声明语句中的值。全局变量的作用范围为包含该变量的源程序。 示例1变量定义举例 GBLA arithmetic ;声明一个全局的算数变量 Arithmatic SETA 0xEF ;向该变量赋值 SPACE arithmetic ;使用该变量 GBLL logical ;声明一个全局的逻辑变量logical Logical SETL{TURE} ;向该变量赋值 (1)
LCLA、LCLL及 LCLS LCLA、LCLL及LCLS伪操作作用于声明一个ARM程序中的局部变量,并在默认情况下将其初始化。 LCLA伪操作声明一个局部的算术变量,并将其初始化成0. LCLL伪操作声明一个局部的逻辑变量,并将其初始化成{FALSE}. LCLS伪操作声明一个局部的串变量,并将其初始化成空串“”。 语法格式 <LCLX> Variable 其中:<LCLX>是LCLA、LCLL或LCLS三种伪操作之一;Variable是局部变量的名称。在其作用范围内必须惟一,即同一个变量只能在作用范围内出现一次。 使用说明 如果用这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成第2次声明语句中的值。局部变量的作用范围为包含该局部变量的宏代码的一个实例,即局部变量一般只用于宏代码中。 实例2 局部变量定义举例 MACRO ;声明一个宏 $lable message $a ;宏的原型,宏的名称为message,有一个参数$a LCLS string ;声明一个局部变量string String SETS “error”
;向该变量赋值 $lable ;代码 INFO 0,“string”:CC::STR:$a ;使用该串变量 MEND ;宏定义结束 (3)SETA、SETL及SETS SETA、SETL及SETS伪操作作用于给一个ARM程序中的全局或局部变量赋值。 SETA伪操作给一个全局或局部算术变量赋值。 SETL伪操作给一个全局或局部逻辑变量赋值。 SETS伪操作给一个全局或局部字符串变量赋值。 语法格式 <SETX> Variable expr 其中:<SETX>是SETA、SETL或SETS三种伪操作之一;Variable是使用GBLA、GBLL、GBLS、LCLA、LCLL或LCLS定义的变量的名称,在其作用范围内必须惟一;expr为表达式,即赋予变量的值。 使用说明 注意:在向变量赋值前,必须先声明该变量。 实例3 变量赋值举例 GBLA arithmetic ;声明一个全局的算术变量 Arithmetic SETA 0xEF ;向该算术变量赋值 SPACE arithmetic ;引用该算术变量 GBLL logical ;声明一个全局的逻辑变量logical Logical SETL{TURE} ;向该变逻辑量赋值 (4)RLIST RLIST为一个通用寄存器列表定义名称。 语法格式 name RLIST {list of registers} 其中:name是将要定义的寄存器列表的名称;{list of registers}为通用寄存器列表。 使用说明 RLIST伪操作作用于给一个通用寄存器列表定义名称。定义的名称可在LDM/STM指令中使用,即这个名称代表了一个通用寄存器列表。在LDM/STM指令中,寄存器列表中的寄存器的访问次序总是先访问编号较低的寄存器,再访问编号较高的寄存器。也可以说,是编号低的寄存器对应于存储器的低地址,而不管寄存器列表中各寄存器的排列顺序。但为了编程的统一性,寄存器列表中各寄存器一般按编号由低到高排列。 示例4 RLIST伪操作举例 List RLIST{R0-R3} ;将寄存器列表{R0-R3}的名称定义为List STMDF SP!List ;保存寄存器列表List (5)CN CN为一个协处理器的寄存器定义名称。 语法格式 name CN expr 其中:name是该寄存器的名称;expr为协处理器的寄存器的编号,数值范围为0~15. 使用说明 CN伪操作作用于一个协处理器的寄存器定义名称,方便程序员记忆该寄存器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。 示例5 CN伪操作举例 Power CN 6 ;将协处理器的寄存器6名称定义为Power (6)CP CP为一个协处理器定义名称。 语法格式 name CP expr 其中:name是该协处理器的名称。Expr为协处理器的编号,数值范围为0~15. 使用说明 CP伪操作用于给一个协处理器定义名称,方便程序员记忆该协处理器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。 示例6 CP伪操作举例 Dzx CP 6 (7)DN、SN DN为一个双精度的VFP寄存器定义名称。 SN为一个单精度的VFP寄存器定义名称。 语法格式 name DN expr name SN expr 其中:name是将要定义的VFP寄存器的名称。Expr为VFP双精度寄存器编号(0~15)或者VFP单精度寄存器编号(0~31) 使用说明 DN和SN伪操作用于一个VFP寄存器定义名称,方便程序员记忆该协处理器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。 示例7 DN、SN伪操作举例 Height DN 6 ;将VFP双精度寄存器6名称定义为height Width SN 20 ;将VFP单精度寄存器20名称定义为width (8)FN name FN expr 其中:expr是将要定义的浮点寄存器的名称。expr为浮点寄存器的编号,数值范围为0~7. 使用说明 FN伪操作作用于给一个浮点寄存器定义名称,方便程序员记忆该协处理器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。 示例8 FN伪操作举例 Lengh FN 6 ;将浮点寄存器6名称定义为Lengh 凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网 |