日期:2014-05-16  浏览次数:20684 次

关于text段,data段的疑惑
比如说arm的bootloader,编译出来是二进制文件,里面含有text段,data段,bss段,堆栈段等信息,该二进制文件需要烧录到rom中,烧进去以后这些段就自己分开了吗?是什么原理?

------解决方案--------------------
这些段都是人为划分的吧,说的是程序运行时的内存布局
程序文件中只存储text段、data段
------解决方案--------------------
二进制文件只有text段,data段,bss段
成为进程后才有堆栈段
二进制文件里的各个段按照elf 或pe等结构存储,在文件里的地址偏移跟最终的内存状态的各个段的位置没有联系
程序执行时,加载器load负责分析elf文件,取出各个段,放在最终的内存虚拟地址

想深入学习,有
《程序员的自我修养-链接、装载和库》这本书