-
- Можеть посмотреть map файл? - BlackMorda(10.06.2020 10:37)
- Традиционно в конце лежит содержимое переменных, которые
инициализируются при старте. Если способ инициализации --
копирование без всяких сжатий, массив типа "char
foo[1000]={1,2,3};" будет выглядеть как-то так (много нулей). - SciFi(10.06.2020 10:06)
- Я тоже об этом думал, но: почему количество нулей меняется; почему
в НЕХ-се их нет (смотрел пролистыванием и поиском 16 нулевых байт
подряд и около того)? - maleon(10.06.2020 10:19 - 10:23)
- Теперь понятно, почему я всегда испытывал недоверие к bin - VLLV(10.06.2020 11:00)
- А где они есть??? Что ты называешь "бинарником"? ELF? Сырой файл?
Структура hex очень отдалённо напоминает elf: там тоже секции
расположенные по заданным адресам и их содержимое. Если какие-то
адреса не используются, то в hex или elf не будет сегмента
заполненного нулями, а в сыром файле (bin) -- будет. Потому, что
там нельзя сказать, мол эта секция начинася с этого адреса и
занимает столько-то килобайт, потом 32 килобайта пустоты, потом
следующая секция. В сыром файле fk0(98 знак., 10.06.2020 10:26)
- Нули в конце бинарника и размер бинарника не зависит от добавления
кода, в НЕХ-файле их нет и размер зависит от кода - maleon(10.06.2020 10:26 - 10:34)
- Бинарником называю результирующий BIN-файл maleon(1 знак., 10.06.2020 10:29, картинка)
- У тебя если, например, код в бинарнике начинается с адреса 0, а ОЗУ с адреса 0x1000, то пространство между кодом и ОЗУ в бинарнике будет забито нулями. А в hex просто начтётся новый сегмент с заданным адресом 0x1000. Почему у тебя в конце нули не ясно, видимо там какие-то данные (не bss) с нулевым содержанием и из-за них происходит забивка промежутка нулями (в бинарном файле нет возможности не записать в промежуток ничего). - fk0(10.06.2020 14:12)
- Бинарником называю результирующий BIN-файл maleon(1 знак., 10.06.2020 10:29, картинка)
- Нули в конце бинарника и размер бинарника не зависит от добавления
кода, в НЕХ-файле их нет и размер зависит от кода - maleon(10.06.2020 10:26 - 10:34)
- Традиционно есть две секции: bss и data. Ещё text и rodata. В text кладётся код. В rodata -- константы (текстовые строки, например). В data -- инициализирующие значения переменных. В bss -- переменные изначально не инициализированные (инициализированные нулями). И традиционно секция bss в файле отсутствует. Под неё выделяется память в процессе запуска программы и эта память обнуляется. В секции data же сплошного заполнения нулями быть не может (иначе бы оно оказалось fk0(43 знак., 10.06.2020 10:23)
- Может проект создан в более новой версии, там какая то такая опция есть, а я в своей версии её не вижу и изменить не могу, но компилятор её отрабатывает - maleon(10.06.2020 10:22)
- Я тоже об этом думал, но: почему количество нулей меняется; почему
в НЕХ-се их нет (смотрел пролистыванием и поиском 16 нулевых байт
подряд и около того)? - maleon(10.06.2020 10:19 - 10:23)