2026/5/21 14:21:13
网站建设
项目流程
太原网站建设公司大全,小程序app怎么做,溧水做网站价格,seo行业岗位有哪些1. 解析各字段 Tip1#xff1a;.rodata中放置的是常量值#xff0c;例如字符串的内容“abcdef”#xff0c;而作为字符串的变量则放在data数据段#xff0c;所以.data中的字符串变量的值实际保存了指向字符串首个字符的地址#xff0c;因此就能索引到字符串的内容#xf…1. 解析各字段Tip1.rodata中放置的是常量值例如字符串的内容“abcdef”而作为字符串的变量则放在data数据段所以.data中的字符串变量的值实际保存了指向字符串首个字符的地址因此就能索引到字符串的内容这应该也是为什么c代码中数组变量可以表示数组首地址的原因Tip2:一些未初始化的变量则放在.bss段它们默认的值是0。其中各程序段的起始地址是可以通过链接器的链接脚本进行指定的。链接脚本就是.lds结尾的文件。2. 编译链接elfbin文件之间的联系链接的时候指定具体地址到底是如何决定的代码最终就放在哪个位置呢是什么内在逻辑请见我之前的文章链接。[从零构建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 多余的部分就是内存中需要清零的空间大小也就是为那些未初始化的变量分配的空间。