启动文件

启动文件往往为startup_设备型号.s,为汇编程序

Stack_Size      EQU     0x0000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp

其中Stack_Size EQU 0x0000400类似于#define不占用程序数据空间,这里定义了Stack_size这个符号为0x0000400,AREA功能为声明一个新段的相关属性,也不占用数据空间。SPACE分配内存空间,属于对内存进行布置,并非ARM执行指令。

指令名称作用
EQU给数字常量取一个符号名,相当于C语言中的 define
AREA汇编一个新的代码段或者数据段
SPACE分配内存空间
RESERVE8当前文件堆栈需按照8字节对齐
EXPORT声明一个标号具有全局属性,可被外部的文件使用
DCD以字为单位分配内存,要求4字节对齐,并要求初始化这些内存
PROC定义子程序,与ENDP成对使用,表示子程序结束
WEAK弱定义,如果外部文件声明了一个标号,则优先使用外部文件定义的标号,如果外部文件没有定义也不出错。要注意的是:这个不是ARM的指令,是编译器的,这里放在一起只是为了方便
IMPORT声明标号来自外部文件,跟C语言中的 EXTERN关键字类似
B跳转到一个标号
ALIGN编译器对指令或者数据的存放地址进行对齐,一般需要跟一个立即数,缺省表示4字节对齐。要注意的是:这个不是ARM的指令,是编译器的,这里放在一起只是为了方便。
END到达文件的末尾,文件结束
IF ELSE ENDIF汇编条件分支语句,跟C语言的 if else类似