三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Cortex-M3:为什么启动文件中常见 __Vectors 和 Reset_Handler 这些命名?

Cortex-M3:为什么启动文件中常见 __Vectors 和 Reset_Handler 这些命名?

难度:★
本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。


打开任何一个 Cortex-M3 的启动文件,你第一眼看到的多半是这些名字:

__Vectors DCD __initial_sp DCD Reset_Handler DCD NMI_Handler DCD HardFault_Handler

再看分散加载文件(.sct):

*.o (RESET, +First)

链接器生成的符号:

Image$$ARM_LIB_STACK$$Base

这些名字有一个共同点:它们不是指令集规定的,不是硬件强制的,但你几乎在所有工程里都能看到一模一样的拼写。

为什么?因为这是 ARM 生态数十年演化出的一套“约定”。它不是法律,但违背后的代价,和违法一样严重。

今天这篇文章,就来拆解启动文件中命名约定的来龙去脉,看看“约定优于配置”这个软件工程原则,是怎么在底层汇编世界里扎根的。


一、先做一个实验:把名字改掉会怎样?

我们大胆地把启动文件里的所有标准名字换成自定义的。

← 返回列表