为什么需要 ENTRY 指令?如果多个入口点会怎样?

📅 发布时间:2026/7/23 5:23:54
为什么需要 ENTRY 指令?如果多个入口点会怎样? 难度:★★本文首发于我的嵌入式技术号「OneChan」,未经授权禁止转载。你有没有注意过,启动文件里通常有一行这样的指令:ENTRY它往往孤零零地出现在最前面,没有操作数,没有修饰符,就那么一行。很多人的反应是:“既然模板里有,那我留着就是了。”但你有没有想过:这个 ENTRY 到底在干什么?如果我删掉它会怎样?如果我写了两个呢?今天我们就来回答这三个问题。答案会顺势揭开链接器确定程序起始地址的完整逻辑。一、先看现象:删掉 ENTRY 会怎样拿一个最简单的 Keil 工程做实验。启动文件startup_xxx.s里原本有:ENTRY AREA RESET, DATA, READONLY __Vectors DCD __initial_sp DCD Reset_Handler ; ...把ENTRY删掉,编译、链接。程序照样能跑。复位后一切正常。这就怪了。如果删掉都没事,那它存在的意义是什么?答案是: