ARM汇编程序的理解
先看下面一个程序:
AREA TigerJohn,CODE,READONLY;声明代码段
CODE32
;声明为32位ARM指令
ENTRY
;声明程序入口
START MOV R0 ,#0
MOV R1 ,#1
ADD R1, R1,R0
B START
END
针对以上程序,说明如下:
1、在汇编程序中,只有标号才能顶格写,其他的不要顶格写。
2、在ARM汇编程序中用“;”号进行注释。
3、一个完整的ARM汇编由两部分组成:声明,实际代码段
1)、声明代码段:用来定义一个段,并说明一个段的名字和属性。AREA后面跟的字符串为段名,CODE表明此段为代码段,READONLY说明此代码段具有只读属性。
段分为:(1)代码段:代码段的内容为执行代码
(2)数据段:数据段存放代码运行时需要用到的数据。
段的属性:(1)READONLY:只读
(2)READWRITE:读写
2)、声明指令集:用CODE32或CODE16来声明程序为32位ARM指令或是16位Thumb指令。(有些资料说这个声明是必须的,可是我认为在ADS编译的ARM程序可以没有这个,
使用什么指令集可以在ADS中设置)
3)、声明程序入口:用ENTRY指令标示程序的入口点。
4)、声明程序的结束:在程序完成后用END指令声明程序的结束。没一个汇编程序段必须有一条END指令,指示代码段的结束。
注:(1)在ARM汇编语言程序中,以程序段为单位组织代码。段是相对独立的指令或数据序列,具有特定的名称。
(2)一个汇编程序至少有一个代码段。如果程序较长时,可以分割为多个代码段和数据段。多个段在程序编译连接时最终形成一个可执行的映像文件。