Вопрос - выходят новые процессоры и соответственно инструкции к ним. Теоретически необходимо просто в специальном файле добавить строку, чтобы компилятор использовал новые возможности процессоров. Только куда её добавлять?
Но я как понимаю freepascal обрабатывает программу пользователя на момент оптимизации и отправляет в компоновщик и далее перевод на ассемблер.
Вообщем подскажите где можно почитать - куда добавить строку, что бы теоритически работали новые инструкции.
Просто очень интересно... Заранее большое спасибо.
P.S.: Книгу как работают компиляторы, уже читал.
Как работает freepascal (основы создания компилятора)
Модератор: Модераторы
Только сначала текст на паскале транслируется в текст на ассемблере, затем текст на ассемблере компилируется в объектный файл, а затем компоновщик (линкер) собирает из объектных файлов исполняемый модуль. Теоретически оптимизация возможна на первых двух этапах, причем по-моему оптимизировать ассемблерную программу имеет больше смысла
Одна из оптимизаций fpc на которую я нарвался это передача параметров через регистры (включено по-умолчанию). Проблема возникает когда начинаешь вставлять в код куски написанные на ассемблере. Оптимальное решение проблемы - изменения способа передачи перамтров на классический (для паскаля).
ЗЫ. во внутренности fpc не лазил
Одна из оптимизаций fpc на которую я нарвался это передача параметров через регистры (включено по-умолчанию). Проблема возникает когда начинаешь вставлять в код куски написанные на ассемблере. Оптимальное решение проблемы - изменения способа передачи перамтров на классический (для паскаля).
ЗЫ. во внутренности fpc не лазил
- Slavikk
- постоялец
- Сообщения: 208
- Зарегистрирован: 15.01.2007 21:34:52
- Откуда: Из лесов...
- Контактная информация:
Спасибо. Теоретически я это понимаю, но просто может кто знает схему как происходит компилирование? Т.е. например платформа x86 - операции сложения переводятся с помощью того файла, вычитания с помощью того файла (в исходниках). Интересен момент как добавления новых инструкций, так и можно ли компилировать в байт код (тоесть не писать полностью интерпритатор, а взять хоть часть имеющегося).
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Slavikk писал(а):Т.е. например платформа x86 - операции сложения переводятся с помощью того файла, вычитания с помощью того файла (в исходниках).
см. к примеру
compiler\x86\x86ins.dat
compiler\x86\x86reg.dat
и
compiler\i386\*.inc
STAKANOV писал(а):причем по-моему оптимизировать ассемблерную программу имеет больше смысла
Оптимизировать ассемблерную программу можно, но очень сложно.
На сколько я знаю это делается во время генерации ассемблерного кода, когда есть высокоуровневая информация, а не после...
PS: Я только ради любопытства лазил, но не могу сказать, что понял...
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
