Как работает freepascal (основы создания компилятора)

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Как работает freepascal (основы создания компилятора)

Сообщение Slavikk » 11.07.2007 22:56:30

Вопрос - выходят новые процессоры и соответственно инструкции к ним. Теоретически необходимо просто в специальном файле добавить строку, чтобы компилятор использовал новые возможности процессоров. Только куда её добавлять?

Но я как понимаю freepascal обрабатывает программу пользователя на момент оптимизации и отправляет в компоновщик и далее перевод на ассемблер.

Вообщем подскажите где можно почитать - куда добавить строку, что бы теоритически работали новые инструкции.

Просто очень интересно... Заранее большое спасибо.

P.S.: Книгу как работают компиляторы, уже читал.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение STAKANOV » 12.07.2007 09:56:44

Только сначала текст на паскале транслируется в текст на ассемблере, затем текст на ассемблере компилируется в объектный файл, а затем компоновщик (линкер) собирает из объектных файлов исполняемый модуль. Теоретически оптимизация возможна на первых двух этапах, причем по-моему оптимизировать ассемблерную программу имеет больше смысла

Одна из оптимизаций fpc на которую я нарвался это передача параметров через регистры (включено по-умолчанию). Проблема возникает когда начинаешь вставлять в код куски написанные на ассемблере. Оптимальное решение проблемы - изменения способа передачи перамтров на классический (для паскаля).

ЗЫ. во внутренности fpc не лазил :cry:
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Slavikk » 12.07.2007 10:51:32

Спасибо. Теоретически я это понимаю, но просто может кто знает схему как происходит компилирование? Т.е. например платформа x86 - операции сложения переводятся с помощью того файла, вычитания с помощью того файла (в исходниках). Интересен момент как добавления новых инструкций, так и можно ли компилировать в байт код (тоесть не писать полностью интерпритатор, а взять хоть часть имеющегося).
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение shade » 12.07.2007 12:04:25

Slavikk писал(а):Т.е. например платформа x86 - операции сложения переводятся с помощью того файла, вычитания с помощью того файла (в исходниках).

см. к примеру
compiler\x86\x86ins.dat
compiler\x86\x86reg.dat
и
compiler\i386\*.inc

STAKANOV писал(а):причем по-моему оптимизировать ассемблерную программу имеет больше смысла

Оптимизировать ассемблерную программу можно, но очень сложно.
На сколько я знаю это делается во время генерации ассемблерного кода, когда есть высокоуровневая информация, а не после...

PS: Я только ради любопытства лазил, но не могу сказать, что понял...
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Slavikk » 12.07.2007 12:13:38

Спасибо. Вообщем решил, что для углубленного изучения вопроса хочу прочитать книги по GCC (на русском), жаль что книги редкие.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Иван Шихалев » 12.07.2007 13:16:18

STAKANOV писал(а):сначала текст на паскале транслируется в текст на ассемблере

А вот это — не верно. Сначала текст преобразуется в абстрактную структуру кода, а затем формируется объектный код ИЛИ (если указаны соответствующие ключи) в ассемблерный.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru