手撕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字节对齐。

Stack_Size      EQU     0x00000400
Stack_Mem       SPACE   Stack_Size

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

__initial_sp

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

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

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)。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式历练者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值