欢迎光临
我们一直在努力

Cortex-M3:为什么需要 PROC / ENDP 标记函数?

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


打开启动文件,你会看到每个函数都被一对指令包裹:

Reset_Handler PROC
EXPORT Reset_Handler
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP

PROC 开头,ENDP 结尾。

很多人觉得这只是个格式——就像 C 语言的大括号,标明函数边界而已。

但如果你以为它们只是装饰品,那就低估了这对指令的真正作用。

PROC 和 ENDP 不产生任何机器码。它们写给调试器看,写给链接器看,写给异常回溯机制看。没有它们,你的调用栈可能一片混乱,单步调试可能跳进深渊,甚至 HardFault 分析工具可能直接罢工。

今天这篇文章,就来拆开这对“无声指令”背后的三重机制。


一、PROC / ENDP 的第一重作用:标记函数边界

汇编器本身并不理解“函数”这个概念。</

赞(0)
未经允许不得转载:171主机测评 » Cortex-M3:为什么需要 PROC / ENDP 标记函数?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址