尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[从零构建操作系统]09 程序段(SECTION)及elf文件介绍

[从零构建操作系统]09 程序段(SECTION)及elf文件介绍
📅 发布时间:2026/6/20 1:06:50

1. 解析各字段

Tip1:.rodata中放置的是常量值,例如字符串的内容“abcdef”,而作为字符串的变量则放在data数据段,所以.data中的字符串变量的值实际保存了指向字符串首个字符的地址,因此就能索引到字符串的内容,这应该也是为什么c代码中,数组变量可以表示数组首地址的原因

Tip2:一些未初始化的变量则放在.bss段,它们默认的值是0。

其中,各程序段的起始地址,是可以通过链接器的链接脚本进行指定的。链接脚本就是.lds结尾的文件。

2. 编译链接,elf,bin文件之间的联系

链接的时候指定具体地址,到底是如何决定的代码最终就放在哪个位置呢,是什么内在逻辑?请见我之前的文章链接。[从零构建x86操作系统] 03 x86保护模式下编程(1)---系统启动简介_x86 bootrom entrypoint的地址-CSDN博客

elf文件是一个通用的可执行文件,但是里面有一些额外的格式化信息。bin文件则是将elf文件去除了额外信息,只保留了纯粹的.text,.data,.rodata,.bss这些字段的数据。

elf文件图解:

elf文件就是加了头部信息的bin文件,通过头部信息可以知道,每个代码段的信息(例如数据大小,在文件中的偏移地址等等)。elf文件满足固定的格式规则要求,可按照文档给定的结构体信息,将elf解析出纯粹的程序段。

Tip:有个特殊的bss段,它里面放的就是未初始化的变量,而这些未初始化的变量默认为0,所以其实在elf文件中,不会真的放了一堆0白白的占空间,但会有bss段的信息,通过读取elf结构体的p_memsz和p_filesz就能分别知道这个段在内存中总共需要多大、elf文件里提供了多少内容。p_memsz == p_filesz表示没有bss数据段需要清零;p_memsz > p_filesz 多余的部分就是内存中需要清零的空间大小,也就是为那些未初始化的变量分配的空间。

相关新闻

  • 如何在Windows上运行LobeChat镜像?WSL环境配置指南
  • 如何选择汽车车灯提升行车安全?
  • (N_122)基于springboot,vue网上订餐系统

最新新闻

  • 红队内网渗透利器,告别原版特征暴露(支持免杀)内网扫描爆破后渗透一站式落地
  • 2026体系认证哪家通过率高?关键选择因素解析 - 品牌排行榜
  • 芯片数据手册修订历史深度解析:从MPC5676R看硬件设计关键要点
  • 从零到一:使用PowerDesigner构建高效数据库物理模型
  • AI在生物学研究中的真实能力边界与辅助实践
  • LPC43S70 ADC信号完整性优化:从引脚串扰到输入电路设计

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号