Карта памяти показывает пространство, выделенное для загадочных переменных _powers_ и _npowers_
Я искал карту памяти для своего кода (написанного на c и скомпилированного компилятором XC16), и вижу значительное пространство, выделенное для полномочий, npowers и dpowers в сегменте.data.
Кто-нибудь знает, для чего используется это распределение?
Мой код использует библиотеку с плавающей точкой, а также 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)
1 ответ
Вам нужно было бы взглянуть на источник версии libc, чтобы получить категоричный ответ. Я действительно искал источник для одного и обнаружил, что в этой реализации dpowers был таблицей констант (степеней 10), используемых для вывода (doprnt). Я подозреваю, что другие похожи.
Примечание. Хотя они и являются константами, но их нет в разделе только для чтения из-за языковых ограничений.