新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM汇编程序设计之:汇编语言文件格式

ARM汇编程序设计之:汇编语言文件格式

作者:时间:2013-09-30来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257046.htm

表10.11列出了汇编语言中的逻辑操作符。逻辑操作符进行两个逻辑表达式之间的基本逻辑操作。操作的结果为{FALSE}或{TURE}。

表10.11 逻辑操作符

操作符

使用

说明

:LAND:

A:LAND:B

A和B做逻辑与

续表

操作符

使用

说明

:LEOR:

A:LEOR:B

A和B做逻辑异或

:LOR:

A:LOR:B

A和B做逻辑或

10.3.4汇编语言预定义寄存器和协处理器

汇编器对的寄存器和协处理器进行了预定义(包括APCS对r0~r15寄存器的定义),所有的寄存器和协处理器名都是大小写敏感的。

1.预定义寄存器名

下面列出了被汇编器预定义的寄存器名。

·r0~r15和R0~R15(15个通用寄存器)。

·a1~a4(参数、结果或临时寄存器,同r0~r3)。

·v1~v8(变量寄存器,同r4~r11)。

·sb和SB(静态基址寄存器,同r9)。

·sl和SL(栈顶指针寄存器,同r10)。

·fp和FP(帧指针寄存器,同r11)。

·ip和IP(过程调用中间临时寄存器,同r12)。

·sp和SP(栈指针寄存器,同r13)。

·lr和LR(连接寄存器,同r14)。

·pc和PC(程序计数器,同r15)。

2.预定义程序状态寄存器名

下面列出了ARM汇编器预定义的程序状态寄存器的名称。

·cpsr和CPSR(当前程序状态寄存器)。

·spsr和SPSR(保留程序状态寄存器)。

3.预定义的浮点寄存器名

下面列出了ARM汇编器预定义的浮点运算寄存器。

·s0~s31和S0~S31(VFP单精度浮点运算寄存器)。

·d0~d15和D0~D15(VFP双精度浮点运算寄存器)。

注意

FPA的寄存器f0~f7和F0~F7已不再使用。

4.预定义的协处理器名

下面列出了ARM汇编器预定义的协处理器名和协处理器寄存器名。

·p0~p15(预定义的协处理器0~15的名称)。

·c0~c15(预定义的协处理器寄存器0~15的名称)。

10.3.5汇编语言内置变量

ARM汇编器中定义了一些内置变量,这些内置变量不能使用伪指令设置(如,SETA、SETL、SETS等),一般用于程序的条件汇编控制。

下面的例子显示了如何使用内置变量控制程序的执行流程。

If{CONFIG}=16;若为Thumb代码则执行If后的语句

;codes

else

;codes

endif

b;程序结束

下面介绍由ARM汇编器预定义的内置变量。

·{ARCHITECTURE}:选定的ARM体系结构的值,如3,3M,4,4T。

·{AREANAME}:当前段名。

·{ARMASM_VERSION}:ARM编译器ARMASM的变量号。

·|ads$version|:ARM编译器ARMASM的变量号,同{ARMASM_VERSION}。

·{CODESIZE}:如果当前指令为ARM指令,该内置变量取值为32,如果当前指令为Thumb指令,该内置变量取值为16,同{CONFIG}。

·{COMMANDLINE}:当前命令行内容。

·{CONFIG}:如果当前指令为ARM指令,该内置变量取值为32,如果当前指令为Thumb指令,该内置变量取值为16,同{CODESIZE}。

·{CPU}:所使用的CPU名称。默认为ARM7TDMI。如果在编译命令行中使用“-CPU”选项确定CPU类型,则该值为“GenericARM”。

·{ENDIAN}:如果编译器在大端模式下,其值为“big”;如果在小端模式下,其值为“little”。

·{FPIC}:默认为{FALSE},如果设置了“/fpic”选项,其值为{TRUE}。

·{FPU}:所选fpu协处理器的名字。默认为“softVFP”。

·{INPUTFILE}:当前源文件名。

·{INTER}:默认为{FALSE},如果设置了“/inter”选项,其值为{TRUE}。

·{LINENUM}:目前源文件行号。

·{NOSWST}:默认为{FALSE},如果设置了“/noswst”选项,其值为{TRUE}。

·{OPT}:保存当前设置的列表选项。伪操作OPT用来保存当前列表选项,改变选项值,或恢复原始值。

·{PC}或“.”:当前程序地址值。

·{PCSTOREOFFSET}:指令STRpc,[...]和STMRb,{...,pc}与存储的PC值之间的偏移量。

·{ROPI}:默认为{FALSE},如果设置了“/ropi”选项,其值为{TRUE}。

·{RWPI}:默认为{FALSE},如果设置了“/rwpi”选项,其值为{TRUE}。

·{SWST}:默认为{FALSE},如果设置了“/swst”选项,其值为{TRUE}。

·{VAR}或@:存储区位置寄存器的当前值。



评论


相关推荐

技术专区

关闭