1

コード (c で記述され、XC16 コンパイラでコンパイル) のメモリ マップを調べたところ、.data セグメントのpowersnpowers、および dpowers にかなりのスペースが割り当てられていることがわかりました。

この割り当てが何に使用されているか知っている人はいますか?

私のコードは浮動小数点ライブラリと printf/scanf を使用しています - これはこれらの関数の作業スペースでしょうか?

マップ ファイルの 2 つのスニペットを次に示します。

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 に答える