标题:
ARM指令集-模块控制伪指令
[打印本页]
作者:
look_w
时间:
2017-9-24 15:46
标题:
ARM指令集-模块控制伪指令
3.5.5
模块控制伪指令
1、NAME和PROGRAM
该伪指令的格式为:
NAME 模块名
PROGRAM 模块名
NAME
和
PROGRAM
伪指令用于定义一个程序模块。程序模块类似于
C
语言中的函数,是程序中相对独立的一个部分。程序模块即使没有被调用也会被无条件链接。
如:
NAME Main
;定义一个名为
Main
的程序模块
2、END和ENDMOD
END
伪指令用于结束整个汇编语言程序,
ENDMOD
用于结束当前程序模块。每个汇编语言程序最后必须使用
END
伪指令通知汇编器已经到了源程序结尾,以结束汇编。
3、LIBRARY和MODULE
该
伪指令用于定义多模块文件中的小模块,其中每个小模块代表一段子程序,从而可以方便地创建库模块文件。与
NAME
和
PROGRAM
不同的是,用
LIBRARY
和
MODULE
定义的模块只有在被调用时才会复制到链接代码中。
4、RTMODEL
该伪指令的格式为:
RTMODEL 关键字字符串,值字符串
该伪指令用于声明模块的运行模式属性,以强制模块之间的一致性。所有能被链接在一起的模块必须具有相同的关键字;值字符串要么具有相同的值,要么其值为星号
“
*
”。
3.5.6
汇编控制伪指令
1、$和INCLUDE
该伪指令的格式为:
$ 文件名
INCLUDE 文件名
该伪指令用于给当前源文件加载头文件。
2、CASEOFF和CASEON
该伪指令用于源程序文件中禁止和允许大小写字符敏感。
3、LTORG
在使用
ARM伪指令LDR加载地址数据时,要在适当的位置加入LTORG声明一个数据区,把要加载的数据保存在数据区内,再用LDR读出数据。LTORG伪指令通常放在无条件分支或子程序返回指令后面,这样处理器就不会错误的将数据区中的数据当作指令执行。
4、RADIX
该伪指令用于声明当前使用的数制形式。如:
RADIX 16D ;声明当前使用十六进制数
MOV R0
,
#12
;此处
#12
为
0x12
5、IF、ELSE和ENDIF
该伪指令的格式为:
IF 逻辑表达式
指令序列
1
ELSE
指令序列
2
ENDIF
条件汇编伪指令能根据设定条件的成立与否决定是否对指令序列进行汇编生成目标代码。若逻辑表达式为真,则对指令序列
1
汇编生成目标代码;否则对指令序列
2
汇编。其中还可以用
ELSEIF
伪指令设定新条件。
如:
DEFINE Test
;定义一个全局变量
Test
……
IF Test
=
TRUE
指令序列
1
ELSE
指令序列
2
ENDIF
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0