凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

符号定义伪操作

已有 212 次阅读| 2016-1-25 14:57 |个人分类:linux技术

符号定义伪操作

符号定义伪操作用于定义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访问凌阳教育官网


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

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

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

GMT+8, 2024-3-29 07:02 , Processed in 0.015545 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部