作为一种特殊情况,编译器能够使用一个未定义的符号来要求链接程序为指定的符号名保留一块存储空间。如果一个未定义的外部(全局)符号具有非零值,那么对链接程序而言该值就是程序希望指定符号寻址的存储空间的大小值。在链接操作期间,如果该符号确实没有定义,那么链接程序就会在bss段中为该符号名建立一块存储空间,空间的大小是所有被链接模块中该符号值最大的一个。这就是bss段中所谓的公共块(common block)定义,主要用于支持未初始化的外部(全局)数据。例如程序中定义的未初始化的数组。如果该符号在任意一个模块中已经被定义了,那么链接程序就会使用该定义而忽略该值。
编译原理之符号表
最新推荐文章于 2024-07-27 02:21:03 发布