STM32 arm汇编(thumb-2指令集)启动代码分析
;//Rset_Handler的实现 利用PROC、ENDP这一对伪指令把程序段分为若干个过程,使程序的结构加清晰
EXPORT Reset_Handler [WEAK] ;//在外部没有定义该符号时导出该符号,见HELP中[WEAK]
IMPORT __main ;//导入符号,__main为 运行时库提供的函数;完成堆栈,堆的初始话
LDR R0, =__main ;//等工作,会调用下面定义的__user_initial_stackheap;
BX R0 ;//跳到__main,进入C的世界
ENDP ;过程的结束
ALIGN
; User Initial Stack & Heap
IF :DEF:__MICROLIB ;//如果使用micro lib,micro lib 描述见armlib.chm
EXPORT __heap_base
EXPORT __heap_limit ;//只导出几个定义
ELSE ;//如果使用默认C运行时库
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap ;//则进行堆栈和堆的赋值,在__main函数执行过程中调用。
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
ALIGN
ENDIF
END ;//OK ,完了
http://blog.csdn.net/chehlcy/archive/2010/01/09/5164472.aspx
http://files.ourdev.cn/bbs_upload134190/files_11/ourdev_495775.txt
======================================================================
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
LDR R0, =__main
BX R0
ENDP
这段代码什么意思。
有2个地方不理解
一:PROC ENDP
二: [WEAK] 什么意思
-------------------------------------------------------------------------------
一:PROC为子程序开始,ENDP为子程序结束
二:[weak]的意思就是弱。
怎么弱呢?如果你在其他地方写一个同名函数,比如Reset_handler, 你写的这个函数就可以取代它这个函数了。
语法格式:
EXPORT 标号 {[WEAK]}
EXPORT 伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。 EXPORT可用 GLOBAL 代替。标号在程序中区分大小写, [WEAK] 选项声明其他的同名标号优先于该标号被引用。
使用示例:
AREA Init , CO
EXPORT Stest ;声明一个可全局引用的标号Stest……
END
STM32arm汇编启动代 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)