我一直在查看代码的内存映射(用c编写,由XC16编译器编译),发现分配给 权力 , n功率 、和.data段中的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)
您必须查看libc版本的源代码才能得到明确的答案。我确实查看了源代码,发现在该实现中,dpowers是用于输出(doprnt)的常数表(10次方)。我怀疑其他人都很相似。
注意-虽然是常量,但由于语言限制,这些常量不在只读部分中。