.text、.data、.bss、sbss、scommon段

偶尔看到sbss段,不甚清楚,查了一下:

.sbss是小的BSS段,用于存放“近”数据,即使用短指针(near)寻址的数据。有利于小的对象组合到单个可以直接寻址的区域。《程序员的自我修养--链接、装载与库》一书的3.3.4节说:“以前用过的一些名字如.sdata、.tdesc、sbss、lit4、lit8、reginfo、gptab、liblist、.confict。可以不用理会这些段,它们已经被遗弃了。”话虽然这么说,不过实际使用中还是会碰到。

 ELF目标文件具有传统的文本、数据和BSS区段,现在拼写为.text、.data和.bss。经常还会包含.init和.fini(启动和退出时的代码),和其它一些琐碎的东西。.rodata和.data1在某些编译器中被用来表示只读数据和out-of-line数据(有些编译器也有对应只读out-of-line数据的.rodata1区段)。在诸如MIPS这样地址偏移量受限的RISC系统中,还有.sbss和.scommon区段,即小的BSS和公共块,有利于小的对象组合到单个可以直接寻址的区域,就像我们在上面讨论伪寄存器时说到的那样。在GNU C++系统中,还可以会有可以被括入文本、只读数据和数据段中的linkonce区段。

你可能感兴趣的:(c,编译器)