在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1922|回复: 0

[资料] 符号定义伪操作

[复制链接]
发表于 2016-1-25 15:08:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

符号定义伪操作用于定义ARM汇编程序中的变量,对变量进行赋值以及定义寄存器名称。

(1)
GBLAGBLLGBLS

GBLAGBLLGBLS伪操作作用于声明一个ARM程序中的全局变量,并在默认情况下将其初始化。

GBLA伪操作声明一个全局的算数变量,并将其初始化成0.

GBLL伪操作声明一个全局的逻辑变量,并将其初始化{FALSE}.

GBLS伪操作声明一个全局的字符串变量,并将其初始化成空串“”。

语法格式

<GBLX>        Variable

其中:<GBLX>GBLAGBLLGBLS 3种伪操作之一;Variable是全局变量的名称。在其作用范围内必须惟一,即同一个变量名只能在作用范围内出现一次。

使用说明

如果这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成第2次声明语句中的值。全局变量的作用范围为包含该变量的源程序。

示例1变量定义举例

GBLA            arithmetic                     ;声明一个全局的算数变量

Arithmatic      SETA      0xEF             ;向该变量赋值

SPACE          arithmetic                     ;使用该变量

GBLL            logical                          ;声明一个全局的逻辑变量logical

Logical           SETL{TURE}                     ;向该变量赋值

(1)
LCLALCLL LCLS

LCLALCLLLCLS伪操作作用于声明一个ARM程序中的局部变量,并在默认情况下将其初始化。

LCLA伪操作声明一个局部的算术变量,并将其初始化成0.

LCLL伪操作声明一个局部的逻辑变量,并将其初始化成{FALSE}.

LCLS伪操作声明一个局部的串变量,并将其初始化成空串“”。

语法格式

<LCLX>        Variable

其中:<LCLX>LCLALCLLLCLS三种伪操作之一;Variable是局部变量的名称。在其作用范围内必须惟一,即同一个变量只能在作用范围内出现一次。

使用说明

如果用这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成第2次声明语句中的值。局部变量的作用范围为包含该局部变量的宏代码的一个实例,即局部变量一般只用于宏代码中。

实例2     局部变量定义举例

MACRO                                            ;声明一个宏

$lable message $a                               ;宏的原型,宏的名称为message,有一个参数$a

LCLS      string                                  ;声明一个局部变量string

String     SETS      error
;向该变量赋值

$lable                                                ;代码

INFO 0,“string”:CC::STR$a    ;使用该串变量

MEND                                              ;宏定义结束

(3)SETASETLSETS

SETASETLSETS伪操作作用于给一个ARM程序中的全局或局部变量赋值。

SETA伪操作给一个全局或局部算术变量赋值。

SETL伪操作给一个全局或局部逻辑变量赋值。

SETS伪操作给一个全局或局部字符串变量赋值。

语法格式

<SETX>        Variable expr

其中:<SETX>SETASETLSETS三种伪操作之一;Variable是使用GBLAGBLLGBLSLCLALCLLLCLS定义的变量的名称,在其作用范围内必须惟一;expr为表达式,即赋予变量的值。

使用说明

注意:在向变量赋值前,必须先声明该变量。

实例3     变量赋值举例

GBLA            arithmetic                     ;声明一个全局的算术变量

Arithmetic      SETA      0xEF             ;向该算术变量赋值

SPACE          arithmetic                     ;引用该算术变量

GBLL            logical                          ;声明一个全局的逻辑变量logical

Logical           SETL{TURE}                     ;向该变逻辑量赋值

4RLIST

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

5CN

CN为一个协处理器的寄存器定义名称。

语法格式

name CN expr

其中:name是该寄存器的名称;expr为协处理器的寄存器的编号,数值范围为0~15.

使用说明

CN伪操作作用于一个协处理器的寄存器定义名称,方便程序员记忆该寄存器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。

示例5 CN伪操作举例

Power CN 6                         ;将协处理器的寄存器6名称定义为Power

6CP

CP为一个协处理器定义名称。

语法格式

name CP expr

其中:name是该协处理器的名称。Expr为协处理器的编号,数值范围为0~15.

使用说明

CP伪操作用于给一个协处理器定义名称,方便程序员记忆该协处理器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。

示例6 CP伪操作举例

Dzx        CP          6

7DNSN

DN为一个双精度的VFP寄存器定义名称。

SN为一个单精度的VFP寄存器定义名称。

语法格式

name DN expr

name SN expr

其中:name是将要定义的VFP寄存器的名称。ExprVFP双精度寄存器编号(0~15)或者VFP单精度寄存器编号(0~31

使用说明

DNSN伪操作用于一个VFP寄存器定义名称,方便程序员记忆该协处理器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。

示例7     DNSN伪操作举例

Height     DN         6                          ;将VFP双精度寄存器6名称定义为height

Width      SN          20                         ;将VFP单精度寄存器20名称定义为width

8FN

name FN expr

其中:expr是将要定义的浮点寄存器的名称。expr为浮点寄存器的编号,数值范围为0~7.

使用说明

FN伪操作作用于给一个浮点寄存器定义名称,方便程序员记忆该协处理器的功能,所以为该寄存器取的名称一般与该寄存器的功能有关。

示例8

FN伪操作举例

Lengh            FN          6                   ;将浮点寄存器6名称定义为Lengh

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-10 20:53 , Processed in 0.013473 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表