Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Идеология работы компилятора
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
deelan
Здрасте, уважаемые.

Есть ли у кого инфо по работе компиляторов в принципе? Очень хочется понять каким образом происходит трансляция ANSI C кода в ассембленрные мнемоники? Причем неважно IAR ли это будет или любой другой компилятор. Не понимаю как с помощью нескольких регистров осуществляется работа с десятками переменных.

спасибо.
Марк_Я
deelan
В АСМе тоже можно посадить кучу переменных да хоть и на один адрес, только нужно самому следить за последовательным использованием этих переменных. Даже не важно локальные они или глобальные. Ну а Си-компилятор следит за этим автоматически.
Есть процедуры динамически меняющие привязку переменных к физическим адресам. Вообще-то в спецификациях на компилятор это все должно быть...
ЗЫ собственно в чем вопрос? Точный механизм на компилятор никто не опубликует, т.к. это в основном проприетарный продукт, а принципы - очевидны. При простом объявлении переменной, компилятор присвоит ей текущий свободный адрес, если переменная объявлена как динамическая, то он подставит кусок кода с вычисляемой относительной адресацией, ну и в таком же духе остальное. Можно поисследовать компилятор простыми фрагментами и поглядеть чего он там в АСМ перепишет...
deelan
Цитата(Марк_Я @ Sep 21 2007, 13:17) *
deelan
В АСМе тоже можно посадить кучу переменных да хоть и на один адрес, только нужно самому следить за последовательным использованием этих переменных. Даже не важно локальные они или глобальные. Ну а Си-компилятор следит за этим автоматически.
Есть процедуры динамически меняющие привязку переменных к физическим адресам. Вообще-то в спецификациях на компилятор это все должно быть...
ЗЫ собственно в чем вопрос? Точный механизм на компилятор никто не опубликует, т.к. это в основном проприетарный продукт, а принципы - очевидны. При простом объявлении переменной, компилятор присвоит ей текущий свободный адрес, если переменная объявлена как динамическая, то он подставит кусок кода с вычисляемой относительной адресацией, ну и в таком же духе остальное. Можно поисследовать компилятор простыми фрагментами и поглядеть чего он там в АСМ перепишет...


Спасибо за ответ. Нашел на натахаусе литературки по этому вопросу. Сейчас буду знакомиться.
UniBomb
По большому счёту алгоритмы используются одни и теже, различается лишь реализация компилятора. Побольше о компиляторах можно узнать в "книге дракона".
Max73
Цитата
Есть ли у кого инфо по работе компиляторов в принципе? Очень хочется понять каким образом происходит трансляция ANSI C кода в ассембленрные мнемоники? Причем неважно IAR ли это будет или любой другой компилятор.

Ну как, в двух словах схема одна: парсинг, синтаксический анализ, семантический анализ, построение дерева вывода, генерация кода. smile.gif
Oldring
Цитата(Max73 @ Oct 27 2007, 15:48) *
Ну как, в двух словах схема одна: парсинг, синтаксический анализ, семантический анализ, построение дерева вывода, генерация кода. smile.gif


Про оптимизацию забыли smile.gif
tyro
Можно так же посмотреть книгу: _http://www.natahaus.ru/2006/02/09/pishem_kompiljator.html
vvs157
Цитата(Марк_Я @ Sep 21 2007, 13:17) *
Точный механизм на компилятор никто не опубликует, т.к. это в основном проприетарный

gcc открытый и кроссплатформенный и с полным комплектом исходников
vetal
www.cs.princeton.edu/software/lcc/
с подробным описанием принципов работы )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.