重定位程序的段请教了!
在DSP的CCS编译幻境中,可以比较清楚的看到C的程序最终会生成如下几个段(逻辑段):.text; .bss;.stack; .cint; .const;
.data; .far; .sysmem;
好在,在CCS中,我们可以手动设置这些段落的重定位的位置,而很多的其他的编译系统中是不能手动操作这些段落的,编译和链接系统把这些操作都隐藏了,现在,我想知道在这些段中的存储的内容都是哪些?
尤其,不理解 .cint; .const;这两个段落的内容,其他的text是程序代码,bss是全局变量和静态变量;stack是系统的栈区域,等等,请高手帮忙解释一下其他的几个段落的内容?
[解决办法]
C语言的段
未初始化块(data)
.bss 存放全局和静态变量
.ebss 长调用的.bss(超过了64K地址限制)
.stack 存放C语言的栈
.sysmem 存放C语言的堆
.esysmem 长调用的.sysmem(超过了64K地址限制)
初始化块
.text 可执行代码和常数(program)
.switch switch语句产生的常数表格(program/低64K数据空间)
.pinit Tables for global constructors (C++)(program)
.cinit 用来存放对全局和静态变量的初始化常数值(program)
.const 全局和静态的const变量初始化值和字符串常数,(data)
.econst 长.const(可定位到任何地方)(data