完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
栈名:S TAC K 大小:Stack_Size 只分配空间不做初始化或者初始化为0:NOINIT 可读可写:READWRITE : 按8 字节对齐:ALI GN=3 栈顶地址:__in it ia l_s p Stack_Size EQ U 0x00000400 A R EA S TAC K, NOINIT, READWRITE , ALI GN=3 Stack_Mem S PA C E Stack_Size __in it ia l_s p 请问以上程序中的:__in it ia l_s p 这个没有定义编译器怎么知道它呢 谢谢
|
|
相关推荐
6个回答
|
|
__initial_sp 是编译器自带的定义吧
|
|
|
|
这个在编译器里面有设置,比如MDK的工程config里面
|
|
|
|
__initial_sp:这个函数内容见下面堆的设置
; Heap Configuration ; Heap Size (in Bytes) ; Heap_Size EQU 0x00000200 AREA HEAP, NOINIT, READWRITE, ALIGN=3 最上面的是栈的设置, |
|
|
|
编译器的配置有的
|
|
|
|
这些事预编译指令, 是编译器自带的。
C语言编译出来都的内容包括: RO(代码)、RW(数据/也就是有初始化的变量)、ZI(未初始化的变量)。 这个是ARM构架的内容。 EQU是汇编指令, ALIGN是预编译指令,用来做全局变量对齐的。 A R EA S TAC K, NOINIT, READWRITE , ALI GN=3 |
|
|
|
_initial_sp 是个标签,代表当前指令的地址,由汇编器计算出的,代码里使用space分配了Stack_Size个内存单元后再在之后加上_initial_sp,后面会用DCD __initial_sp 在向量表0初始化栈顶地址,使用堆栈时栈顶地址减1恰好是分配的栈区间
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
OV7670摄像头使用串口发送数据到另一个板子上的lcd,出现花屏
1372 浏览 1 评论
689 浏览 0 评论
666 浏览 0 评论
STM32CUBEMX(12)--IIC,12864OLED(0.96寸)移植
708 浏览 0 评论
STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式
640 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-27 13:21 , Processed in 0.837066 second(s), Total 87, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号