全局符号与弱符号解析:C语言和汇编中的功能实现
需积分: 50 62 浏览量
更新于2024-08-09
收藏 2.8MB PDF 举报
"全局符号和弱符号-ecu控制策略功能实现与验证-MPLAB® XC16 DS52106A_CN"
这篇资源主要介绍了全局符号和弱符号的概念,以及在ECU(电子控制单元)控制策略实现与验证过程中的作用。全局符号和弱符号是链接器管理符号绑定的关键概念。
1. **全局符号**:全局符号是默认的外部符号,当在目标文件中引用而未定义时,会被声明为全局。这意味着它在整个链接过程中对所有输入文件可见,每个全局符号必须在链接时有一个唯一的定义。如果未在输入文件中找到定义,链接器会尝试从归档库中查找,若仍未找到,会导致链接错误。
2. **弱符号**:弱符号与全局符号共享相同的名称空间,但处理方式不同。弱符号可以被多次定义,即使没有定义,链接器也会假定其值为0。如果存在同名的全局符号定义,那么全局符号的优先级更高,弱符号可以被全局符号覆盖或者被忽略,因此它们是可选的。
3. **句柄(Handle)**:在dsPIC30F这类具有改进型哈佛架构的微控制器中,由于数据和程序存储器的大小差异,处理24位程序存储器地址的函数指针存在挑战。为了解决这个问题,汇编器和链接器支持`handle()`操作符。C编译器在获取函数地址时自动使用`handle()`,而汇编程序员可以通过指令或数据字节指令使用它。链接器会生成一个`.handle`段,包含跳转表,每个条目对应一个GOTO指令,使得16位指针可以访问24位地址空间中的函数。`.handle`段位于程序存储器的低地址部分,确保在16位指针范围内。
这份资料适用于使用MPLAB® XC16编译器、链接器和工具的开发人员,特别是那些在Microchip的dsPIC系列微控制器上开发ECU控制策略的人。它提供了关于如何有效管理和操作这些符号以及处理函数指针问题的指导,对于理解ECU软件的构建和优化至关重要。同时,文档也提醒用户,未来的编译器版本可能会改变函数指针的定义,可能不再需要句柄机制。
2022-10-21 上传
2021-05-07 上传
2021-01-26 上传
2023-05-24 上传
2023-05-24 上传
2023-07-09 上传
2024-10-17 上传
2023-05-31 上传
2024-05-16 上传
陆鲁
- 粉丝: 27
- 资源: 3883
最新资源
- Ashen:在Swift中编写终端应用程序的框架
- autopolyfiller-loader:用于webpack的Autopolyfiller加载器
- MyBarnard:Barnard 在 2x2 矩阵上的精确测试的一个非常紧凑和快速的例程-matlab开发
- 网站:网站做哈克俱乐部巴西!
- 一款简单易用的相机视图
- Projector Scheduler-开源
- flashrom 1.3 for windows
- jQuery下拉滑动切换导航条特效代码
- calError:计算真阳性分数(TPF),假阳性分数(FPF),真分数(T)和假分数(F)的功能,准确度,误差-matlab开发
- 回归线性简单
- PageHighlighter-crx插件
- MACDflex:已知 MACD 趋势指标的灵活版本。 设置您自己的空头、多头和信号周期来计算 MACD。-matlab开发
- 基于PHP的正源进销存管理系统php版源码.zip
- esportsedu.github.io:GitHub页面
- 唯美花卉装饰的婚礼相册PPT模板
- vue-lang-router:具有(可选)本地化URL的Vue语言路由