1 启动文件简介
启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:
1、初始化堆栈指针 SP=_initial_sp
2、初始化 PC 指针=Reset_Handler
3、初始化中断向量表
4、配置系统时钟
5、调用 C 库函数_main 初始化用户堆栈,从而最终调用 main 函数去到 C 的世界
启动文件使用的 ARM 汇编指令汇总
指令名称 |
作用 |
EQU |
给数字常量取一个符号名,相当于 C 语言中的 define |
AREA |
汇编一个新的代码段或者数据段 |
SPACE |
分配内存空间 |
PRESERVE8 |
当前文件堆栈需按照 8 字节对齐 |
EXPORT |
声明一个标号具有全局属性,可被外部的文件使用 |
DCD |
以字为单位分配内存,要求 4 字节对齐,并要求初始化这些内存 |
PROC |
PROC定义子程序开始,与 结束ENDP 成对使用,表示子程序结束 |
WEAK |
弱定义,如果外部文件声明了一个标号,则优先使用外部文件定义的
标号,如果外部文件没有定义也不出错。要注意的是:这个不是 ARM
的指令,是编译器的,这里放在一起只是为了方便。 |
IMPORT 声明标号来自外部文件,跟 C 语言中的 EXTERN 关键字类似 |
B 跳转到一个标号 |
ALIGN 编译器对指令或者数据的存放地址进行对齐,一般需要跟一个立即
数,缺省表示 4 字节对齐。要注意的是:这个不是 ARM 的指令,是
编译器的,这里放在一起只是为了方便。 |
END 到达文件的末尾,文件结束 |
IF,ELSE,ENDIF |
汇编条件分支语句,跟 C 语言的 if else 类似 |
|