...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)
-
- Разве это не линкер делает? Ассемблеру и компилятору не получится
объяснить, они не знают, что линкеру нужно, а что нет. И линкер о
"приличных языках" в общем случае не знает ничего, так что "языки"
не могут иметь ключ в линковщике. - VVB(07.11.2021 11:51)
- как правило языковые пакеты шли со своими "фирменными" линковщиками
:)) - Adept(09.11.2021 00:31)
- Что такое "языковый пакет"? VVB(531 знак., 09.11.2021 09:54)
- В те далёкие времена, когда я увлекался программированием на разных ЯВУ, это были 1-2 (редко 3) дискеты с компилятором, ассемблером, библиотекарем, разными библиотеками, мануалами и экземплами в исходниках . Иногда кой-какие утилиты. Запускалось всё это из командной строки с кучей ключиков по отдельности или общим батником. Adept(197 знак., 09.11.2021 14:43)
- Что такое "языковый пакет"? VVB(531 знак., 09.11.2021 09:54)
- как правило языковые пакеты шли со своими "фирменными" линковщиками
:)) - Adept(09.11.2021 00:31)
- Каждую функцию в отдельную секцию, и каждую переменную в отдельную
секцию. Тогда линкер сможет исключать неиспользуемые. Возможно
перед этим собрать библиотеку, подключать в виде библиотеки - AlexBi(05.11.2021 09:42)
- +1 вот-вот, расслабились все, думают, что линкер за них должен всю работу выполнять(смотрю по своим коллегам вокруг). Сделать все по олдскульному ф-ии разложить по модулям. В каждом модуле те функции которые подключаются все скопом из этого модуля при использование хотя бы одной ф-ии в этом модуле. Затем все скомпилить в obj и сделать lib. - abivan(09.11.2021 11:24)
- "Не хочется рубить библиотеки специально под проект" — ну и зря.
Резатьрубить, не дожидаясь перитонита. А если ещё и не пользуетесь VCS, то сразу расстрел через повешение. - SciFi(04.11.2021 18:44)- может и правда зря :)) вопрос наверное больше к правильной
организации структуры библиотечного хозяйства, тогда и собирать
проект из нужного будет легко и просто, наверное :)) - Adept(04.11.2021 19:58)
- У меня обычно сводится к тому, что в новый проект дёргаю куски из старых (как бы "библиотеки"). Они давно отработаны и неплохо оформлены, но всегда же есть нюансы, поэтому правлю прямо на месте. Попытки обобщить все эти нюансы в одной самой главной библиотеке признал мартышкиным трудом. - SciFi(04.11.2021 20:15)
- может и правда зря :)) вопрос наверное больше к правильной
организации структуры библиотечного хозяйства, тогда и собирать
проект из нужного будет легко и просто, наверное :)) - Adept(04.11.2021 19:58)
- я делаю через .if .else .include - m16(04.11.2021 17:37)
- Пример можно, как это? А то пока не могу сообразить.. вроде это то
же самое, что и объявлять подключение нужных либ, вручную (с чем-то
ведь этот ".if" должен работать, т.е. какое-то условие для него надо определять, к
примеру заявлять функционал дефайнами, или я что-то неправильно
понимаю?? - Adept(04.11.2021 17:52)
- как то так m16(330 знак., 04.11.2021 18:03)
- то бишь в Вашем примере просто привязано к типу процессоров
(предполагаю, что можно заявлять и функционал или используемую
периферию), но чем оно тогда отличается от явного указания нужных
библиотек инклюдами?? - Adept(04.11.2021 18:06)
- какая разница. в примере использование либ умножения для тыни и
мег. в твоём случае условная компиляция нужных тебе либ. это можно
оформить отдельным инлудом в начале кода. в самом инклуде
расставляешь флаги для используемых либ для конкретного проекта. - m16(04.11.2021 18:17)
- в чём смысл такого хитрого конфигурирования проекта?? не снабжать
же библиотеку скриптами условной компиляции под каждый проект :(
проще уж врукопашную указать весь необходимый библиотечный
зоопарк. Если бы сам компилятор выкидывал бы мёртвый код (пусть хоть при специальном ключике компиляции (а ещё лучше, если б была такая директива ассемблера), но этого нет, увы :(( - Adept(04.11.2021 18:34)- условная компиляция в либах делается один раз. а в каждом проекте
свой заголовочный инклуд с флагами нужных и не нужных либ. неужели
так сложно? - m16(04.11.2021 18:54)
- не очень понятно, просто, в чём прелесть? чем лучше просто списка "инклюдов" библиотек с закоментированными ненужными строчками ?:( Хотя, при наличии достаточного лишнего времени, можно сделать симпатично, но это всё равно исключает код крупными кусками (библиотеками), а не на уровне отдельных неиспользуемых процедур и функций - Adept(04.11.2021 19:57)
- условная компиляция в либах делается один раз. а в каждом проекте
свой заголовочный инклуд с флагами нужных и не нужных либ. неужели
так сложно? - m16(04.11.2021 18:54)
- в чём смысл такого хитрого конфигурирования проекта?? не снабжать
же библиотеку скриптами условной компиляции под каждый проект :(
проще уж врукопашную указать весь необходимый библиотечный
- какая разница. в примере использование либ умножения для тыни и
мег. в твоём случае условная компиляция нужных тебе либ. это можно
оформить отдельным инлудом в начале кода. в самом инклуде
расставляешь флаги для используемых либ для конкретного проекта. - m16(04.11.2021 18:17)
- то бишь в Вашем примере просто привязано к типу процессоров
(предполагаю, что можно заявлять и функционал или используемую
периферию), но чем оно тогда отличается от явного указания нужных
библиотек инклюдами?? - Adept(04.11.2021 18:06)
- как то так m16(330 знак., 04.11.2021 18:03)
- Пример можно, как это? А то пока не могу сообразить.. вроде это то
же самое, что и объявлять подключение нужных либ, вручную (с чем-то
ведь этот ".if" должен работать, т.е. какое-то условие для него надо определять, к
примеру заявлять функционал дефайнами, или я что-то неправильно
понимаю?? - Adept(04.11.2021 17:52)
- Может написать скриптик, который соберёт все метки, и проверит, есть ли на них ссылки. А дальше врукопашную лишний код поудалять. Какие нибудь зацикливания могут и остаться - maleon(04.11.2021 17:25)
- А как решить проблему вычисляемого/табличного вызова/перехода? - my504(04.11.2021 14:29)
- вычисляемого никак, но для заполнения таблицы тыж все равно указываешь имя (адрес) вызываемого объекта. и чтобы его вычислить на этапе линковки - его надо слинковать. - Mahagam(04.11.2021 17:26)
- опцией компилятора. Нужно исключение мёртвого кода - используем
соответсвующую опцию компиляции, есть функционал обращения к
процедурам по вычисляемому адресу - не используем :) в конце концов
сделать ключевое слово безусловного включения кода в проект, и
применять его к конкретным процедурам. Но вопрос собственно в
возможности исключения мёртвого кода из ASM-проекта. Есть такая
возможность в AVRASM2?? - Adept(04.11.2021 14:36)
- чтобы не тратить время попусту, пойду кондовым путём :) разобью
большую библиотеку на функциональные группы и буду подключать
каждую своим "инклюдом". Ну как бы придётся в каждом проекте
врукопашную указывать список библиотек с тем функционалом, который
нужен, вместо одно большой. Есть у кого более
прогрессивныеправильные и красивые идеи ?? - Adept(04.11.2021 14:46)- какие идеи? всю свою "библиотеку" разбивай на модули и подключай к проекту как сабрепы abivan(1 знак., 09.11.2021 11:29, картинка)
- чтобы не тратить время попусту, пойду кондовым путём :) разобью
большую библиотеку на функциональные группы и буду подключать
каждую своим "инклюдом". Ну как бы придётся в каждом проекте
врукопашную указывать список библиотек с тем функционалом, который
нужен, вместо одно большой. Есть у кого более
- Разве это не линкер делает? Ассемблеру и компилятору не получится
объяснить, они не знают, что линкеру нужно, а что нет. И линкер о
"приличных языках" в общем случае не знает ничего, так что "языки"
не могут иметь ключ в линковщике. - VVB(07.11.2021 11:51)