微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM体系结构学习4

ARM体系结构学习4

时间:11-21 来源:互联网 点击:

blMMU_SetAsyncBusMode

|;类似#else

bl MMU_SetFastBusMode; default value.

];类似#endif

示例3[ THUMBCODE类似#ifdefTHUMBCODE

bx lr

| ;类似#else

movpc,lr

];类似#endif

n段定义AREA

n指令集定义CODE16和CODE32

指示是Thumb指令集(压缩指令集,每个指令16位)。还是普通32位指令集

n汇编结束:END

n程序入口ENTRY

一个基本ARM程序结构

ARM汇编程序结构

源代码由文本文件组成.按照汇编的编译器不同,分为两大量,一类是ADS的汇编程序,一类是GNU汇编格式,两者在指令集是完成一样,但是在伪指令.程序结构等方法各不同相同.本节主要是讲解ADS汇编格式.

ADS汇编程序,主要包含如下几类程序

n汇编源程序,后缀名是.S

n汇编包含文件,后缀名是.inc

n如果是与C混和编程..C,.h也能识别

ARM汇编语句格式

[标号]<指令|条件|S> <操作数> [;注释]

l所有标号顶格写,而指令和伪指令不能顶格写

l标识符(标号,指令)大小写敏感,所以要在标号和指令时书写一致,一般伪指令,指令,寄存器名可以全部为大写

l注释以;开头,可以顶格写

l可以使用\来分行写太长语句

l变量,常量的定义必须在一行顶格写

常量的书写

l数字常量

在程序中直接写数字,十进制12,256,十六进制0x1228,

l字符常量

类似于C的定义,用SETS来定义字符常量

HELLO SETS “hello,the world!”

l逻辑常量

逻辑真为{TRUE},逻辑假为{FLASE}

Testno SETS {TURE}

汇编程序的段定义

任何一个程序都要分段,C语言一般由编译器自动分段,(分成.Text,.Data段之类),但在汇编程序这样的底层程序中,由开发者自行分段.它包含如下段

l至少一个代码段,并且代码段是只读的,对应(.Text)

l数据段可以没有,也可以有多个.

l每一个段用END结束

AREA定义一个段

AREA段名属性1,属性2,

例子:AREAInit,CODE,READONLY

lENTRY指明一个段的入口

lEND结束一个段

ABC EQU 0x12

AREA Example,CODE,READONLY

ENTRY

START MOV R7,#10

MOV R6,#5

ADD R6,R6,R7

B

END

ADS ARM汇编程序格式要求

1.所有标号要顶格写.

2.所有指令不能顶格写,一般插入Tab键在行首

3.ADS ARM中,是大小写敏感的.建议标号,指令,伪指令,寄存器名全部为大写

4.注释采用;打头

5.每个程序至少有一个AREA在代码里(READONLY)

6.每个段都要用END结束(不能顶格)

最常见几个伪指令AREA,EQU,DCB,END ,ENTRY,EXPORT,GOBEL,IMPORT,

常见伪定义

lDCB定义字符中

Str DCB “hello, world “


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top