Что такое "жевать"? Как это было использовано с cfront - PullRequest
0 голосов
/ 12 марта 2010

Что такое библиотека (или программа) munch из пакета cfront? Для чего использовался?

Ответы [ 3 ]

2 голосов
/ 12 марта 2010

Мунк использовался для сканирования вывода в нм и поиска статических конструкторов / деструкторов.

См. код (с комментариями) на SoftwarePreservation.com .

1 голос
/ 18 марта 2017

"Munching" не относится к cfront.

В C ++ ваши конструкторы и деструкторы вызываются неявно в зависимости от их времени жизни.
Глобальные статические объекты имеют время жизни всей программы.
Если у вас есть несколько глобальных статических объектов в разных единицах перевода,
кто строится первым?

Это зависит от компилятора, и его часто называют Статический порядок инициализации Fiasco .
Обычно вы не заботитесь о порядке построения, но если ваши объекты имеют пожизненные зависимости друг от друга, это может в итоге вас укусить. См. Следующие часто задаваемые вопросы о идиоматически избегая SIOF .

С учетом всего вышесказанного, "muncher" является генератором кода c.
Вы передаете все свои объектные файлы c ++ имени mangler,
и перенаправить вывод имени Манглера в мунчер.
*.o -> nm -> muncher -> *.c

Типичные реализации будут генерировать две таблицы функций
(массив указателей на функции для конструкторов и деструкторов)
+ немного сборки, чтобы убедиться, что они вызваны.

Бывают случаи, когда вы хотите конкретно указать компоновщику, какой порядок инициализировать,
и вот тут появляется мунчер.

0 голосов
/ 12 марта 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...