当前位置: 首页 > news >正文

Cortex-M3:为什么标号(Label)有时是相对地址,有时是绝对地址?

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


先看两行代码:

LDR R0, =Reset_Handler ; ① DCD Reset_Handler ; ②

它们都引用了同一个标号Reset_Handler

但用反汇编器查看,你会发现一个诡异的现象:

  • ① 变成了一条LDR R0, [PC, #offset]——PC 相对寻址
  • ② 变成了一个硬邦邦的 32 位立即数,比如0x08000101——绝对地址

同一个标号,为什么一会儿是相对的,一会儿是绝对的?

更诡异的是:如果你把这段代码从 Flash 挪到 RAM 里运行,① 可能还能跑,② 直接炸。

今天这篇文章,就来拆开标号在不同上下文里的“双重人格”,看看汇编器和链接器如何决定把一个标号变成相对地址还是绝对地址,以及这个决定在运行时会怎样影响你的程序。


一、标号本身没有“绝对”或“相对”的属性

先说清楚第一个误区。

Reset_Handler

http://www.cnnetsun.cn/news/3839831.html

相关文章:

  • GitHub个人访问令牌(PAT)创建与安全使用全指南
  • NVIDIA-SMI ERR!错误深度解析:从GPU监控原理到硬件级诊断修复
  • 从MTF/SFR曲线看懂镜头光学素质:量化评估与实战解读
  • VS Code Remote-SSH 远程开发配置与高效工作流详解
  • JavaScript测试分层策略:单元、集成与功能测试的实战指南
  • 3分钟快速上手:免安装微信网页版终极解决方案指南
  • Kali Linux更换国内源后解决NO_PUBKEY数字签名错误的完整指南
  • 【YOLO26创新改进】TGRS 2026 | Transformer变体改进篇 | 使用CGTA曲率引导令牌注意力,改善结构与纹理的整体协调,适合遥感小目标检测、旋转目标检测、实例分割任务
  • HarmonyOS应用<奇妙科学乐园>开发第48篇:空状态组件EmptyState——ResourceStr图标与文案兜底
  • 算法竞赛中的质数模数1000000007:原理、应用与避坑指南
  • 粉丝空间站第3期:从信息过载到高效实践的技术内容筛选与实战指南
  • 终极网络诊断指南:如何用NatTypeTester快速识别并优化你的NAT类型
  • 程序员外包合同模板:从需求定义到付款验收的完整防坑指南
  • 四层高功率PCB厚铜制造全流程工艺管控与缺陷预防
  • 四层高功率PCB可靠性验证方案 DFM标准化检查清单
  • Vue Devtools 安装与调试全攻略:从基础配置到高级场景实战
  • 单片机GPIO实现倍压电荷泵:原理、设计与实践
  • 如何高效解决Visual C++运行库问题:VisualCppRedist AIO专业指南
  • AI 电动仿真花旋转展示台智能功率覆盖电机驱动、控制逻辑、电源管理的完整选型方案
  • Talkin跨语言实时对话应用:技术原理、实战评测与工程实践
  • 打造高并发个人微信消息发送网关
  • Unity第三人称控制器开发指南:从基础原理到实战调优
  • STM32CubeMX串口配置深度解析:从DMA到中断的实战优化指南
  • 2024年Unity开发者必备:VSCode源码级调试环境配置与实战指南
  • 总谐波失真THD:从概念到测量与优化的完整指南
  • 分布鲁棒优化研究(Matlab代码实现)
  • RedHat系统GCC/G++编译环境配置与多版本管理实战指南
  • 工业自动化系统组态与工程下载:从虚拟设计到物理部署的完整指南
  • 揭秘百家号算法最新变动:AI写稿如何绕过限流雷区,3步通过原创审核
  • AI赋能自动化安全测试平台:从架构设计到工程落地实践