1

我一直在查看我的代码的内存映射(用 c 编写并由 XC16 编译器编译),并看到在 .data 段中分配给powersnpowers和 dpowers 的大量空间。

有谁知道这个分配是做什么用的?

我的代码使用浮点库以及 printf/scanf - 这可能是这些函数的工作空间吗?

以下是地图文件中的两个片段:

section                    address      alignment gaps    total length  (dec)
-------                    -------      --------------    -------------------
...
.data._powers_              0x20b2                   0            0xb0  (176)
.data._npowers_             0x2162                   0            0xb0  (176)
.data.dpowers               0x2212                   0           0x140  (320)

...和...

.data._powers_      0x20b2         0xb0
.data._powers_
                    0x20b2         0xb0 c:/program files (x86)/microchip/xc16/v1.24/bin/bin/../../lib\libc-coff.a(powers.epo)
                    0x20b2                  _powers_

.data._npowers_
                    0x2162         0xb0
.data._npowers_
                    0x2162         0xb0 c:/program files (x86)/microchip/xc16/v1.24/bin/bin/../../lib\libc-coff.a(powers.epo)
                    0x2162                  _npowers_

.data.dpowers       0x2212        0x140
.data.dpowers      0x2212         0xa0 c:/program files (x86)/microchip/xc16/v1.24/bin/bin/../../lib\libc-coff.a(doprnt_cdfFnopsuxX.EPo)
.data.dpowers      0x22b2         0xa0 c:/program files (x86)/microchip/xc16/v1.24/bin/bin/../../lib\libc-coff.a(doprnt.epo)
4

1 回答 1

2

您必须查看 libc 版本的源代码才能得到明确的答案。我确实查看了一个源,发现在那个实现中,dpowers 是一个用于输出 (doprnt) 的常数表(10 的幂)。我怀疑其他人是相似的。

注意 - 虽然是常量,但由于语言限制,它们不在只读部分中。

于 2015-02-14T18:18:38.203 回答