为什么启动文件通常用汇编而不是 C 写?
难度:★本文首发于「OneChan」,未经授权禁止转载。前两篇文章我们聊了向量表和复位流程。有读者看完后问了一个很实在的问题:“既然Reset_Handler里调了SystemInit和__main,这两个都是 C 函数,那为什么Reset_Handler自己不能用 C 写?”这个问题问到了汇编和 C 的本质边界。答案是:不是不想用 C,是在那个时间点,C 语言运行所需的“基础设施”还没搭好。用 C 写启动代码,就像要求一个还没学会走路的小孩去跑马拉松——它连站都站不稳。今天我们把这个问题彻底讲透。一、C 函数运行需要什么条件?先看一个最简单的 C 函数:voidmy_function(void){