8086 CPU与TC2.0环境下exe文件段限制解析
需积分: 0 94 浏览量
更新于2024-08-04
收藏 23KB DOCX 举报
在2016年的一次宣讲会和研讨会中,讨论了关于生成的exe文件中为何存在两个最大为64KB的段的问题。这一限制源于早期计算机架构,特别是8086 CPU的寻址方式。该CPU使用16位地址线,可以提供64KB的寻址范围,通过段地址乘以10加上偏移地址来访问内存。一个段的大小被限制为64KB,这是因为数据和指令的存储方式。
在当时的编程环境中,比如使用TurboC 2.0这样的集成开发环境,程序的不同模式(如Tiny, Small, Compact等)决定了代码、数据和栈的分配。例如,小模式(Small)的a.exe文件使用了C0S.OBJ作为启动代码和CS.LIB作为小模式运行库。在这些模式下,如果代码中包含如Printf这样的函数,编译器会将其纳入链接过程,可能导致程序文件变大,影响执行效率和可维护性。
为了解决这个问题,开发者引入了用户目标模块库(lib文件)。这种方法允许将常用但通用的函数集合预先编译成obj文件,然后被打包成lib。当链接器tlink.exe链接程序时,仅链接实际被程序调用的那些函数,而不是整个源代码,从而优化了最终可执行文件的大小和性能。
因此,这段讨论的核心知识点包括了8086 CPU的寻址机制,不同编程模式对程序结构的影响,以及如何通过模块化和库管理来提高编译效率和软件工程实践。
2022-08-08 上传
2022-08-08 上传
2024-10-03 上传
2023-03-01 上传
2023-06-13 上传
用 matlab 控制系统工具箱或 simulink 仿真环境,对高增益调节器进行仿真研究,自行设计 2 个实验,对象阶次控制在 3 阶或 4阶。用matlab 命令绘制系统的根轨迹和幅相频率特性曲线
2023-03-29 上传
2023-06-08 上传
2023-07-14 上传
战神哥
- 粉丝: 759
- 资源: 325
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析