手撕startup_stm32f10x_hd.s启动文件源码

2022年01月13日 阅读数:2
这篇文章主要向大家介绍手撕startup_stm32f10x_hd.s启动文件源码,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
Stack_Size      EQU     0x00000400

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

AREA告诉编译器汇编新的代码段或数据段,栈名为STACK,不初始化,可读写,2的三次方也就是8字节对齐。web

Stack_Size      EQU     0x00000400
Stack_Mem       SPACE   Stack_Size

SPACE分配内存空间,单位为字节,设定栈的大小为0x00000400(1024,1KB),EQU至关于C语言中define.svg

__initial_sp

__initial_sp是栈的结束地址,也就是栈顶地址。由于栈是由高地址向低地址生长。(如何理解栈的地址是由高端地址向低端增加spa

接下来提到堆,堆是由低地址向高地址生长,只有栈比较特殊。.net

Heap_Size       EQU     0x00000200

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

                PRESERVE8
                THUMB

__heap_base为堆基址(开始地址),__heap_limit为堆的结束地址,再强调一遍:堆是由低地址向高地址生长。堆的大小为0x00000200(512B)。code