文章目录
- 一、链接地址和执行地址
- 1. 链接地址(Load Address)
- 2. 执行地址(Execution Address)
- 链接地址与执行地址的关系
- 实际工作流程
- 总结
- 二、相对跳转和绝对跳转
- 1. 相对跳转(Relative Jump)
- 2. 绝对跳转(Absolute Jump)
- 3. `BX` 和 `BL` 指令
- 总结
- 三、散列文件
- 1. 散列文件的作用
- 2. 散列文件的基本结构
- 示例散列文件
- 3. 关键字说明
- 4. 散列文件的例子详解
- 解释:
- 5. 使用散列文件的优点
- 总结
一、链接地址和执行地址
链接地址和执行地址是嵌入式系统和操作系统中的两个重要概念,它们定义了程序代码和数据在内存中的布局与使用方式。理解它们有助于配置嵌入式应用,尤其是在资源受限的设备上更为关键。
1. 链接地址(Load Address)
链接地址(有时称为加载地址或加载时地址)是编译器在链接阶段确定的内存地址,用来告诉程序和硬件在加载时将各个程序段放置到哪里。在嵌入式系统中,链接地址通常指定在 Flash 存储区,因为代码通常被存储在 Flash 中,以便设备启动后能直接从该地址读取。
- 功能:链接地址决定程序的加载位置,即代码和数据存储的位置。
- 使用场景:大部分情况下,链接地址指向非易失性存储(如 Flash),这样代码在设备掉电或重启后不会丢失。
- 例子:在 Cortex-M 微控制器上,Flash 地址一般从
0x08000000
开始,常作为链接地址。这意味着.text
段(代码段)