и для большой. Посмотрел внутренности. А там - огромное кол-во функций и структур, которые в моей программе ни разу не использованы. Похоже что в генерируемый fas-файл включается всё содержимое include (где разумеется прописано множество неиспользуемых функций). А можно ли как-то с этим бороться, чтобы в fas было только то что реально используется?
Увы, это уже не относится к ассемблеру. Таким путём мы придём к компилятору С. Хотя вы можете использовать NASM с оптимизацией от линковщика C. Но это, конечно, не решение, а уход от проблемы.
Но ведь ассемблер мог бы писать в -s file.fas только то что используется реально? Я конечно понимаю что в ряде случаев может быть какое-то динамическое построение адресов, флагов. Но в общем случае - лишняя инфа не нужна.
Конкретно в FASM, насколько я знаю, такой функции нет. Но если вы спрашиваете "реально ли это?" - да, конечно.
Можно использовать внешний компоновщик, который заодно нормальные отладочные символы сгенерирует
Можно чуть поподробнее? 😞
Конкретно что надо сделать, в случае FASM? Какой компоновщик подойдёт?
.fas так сделан, чтобы можно было как в fasmw при ошибке заходить в макросы, которые сгенерировали конкретную строчку. Это на самом деле удобно, когда надо эти самые макросы отлаживать. Уменьшить штатными способами нельзя. Можно делать .map из .fas, можно ребилдить .fas, выкидывая всё лишнее, но это всё будут внешние утилиты и соответствующие неудобства.
А какие есть инструменты для работы с fas? Чем в эти макросы заходить? x64dbg умеет заходить в такие макросы?
listing и prepsrc из официального пакета, например.
Обсуждают сегодня