Помощь - Поиск - Пользователи - Календарь
Полная версия: Интересно как компиляторы могут компилировать...
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Dr.Bugy
Интересно как компиляторы могут компилировать exe для разных процессоров. Скажем для Pentium и Athlon. Ведь у них одинаковые в лудшем случае команды времён когда АМД делали клоны интеловских процов. Или существуют какието стандарты,хотя стоп, а какже новые технологии АМД и Интел,всякие там навороченные фишки, значит и стандартов быть не может !?
Так чтоже получается?!! Что, чтобы ехе работал на разных процах то они(компиляторы) используют старые,базовые команды, не прикасаясь к современным фмшка про которых так расхваливаются разработчики процессоров в своих рекламах???

Разъясните пожалуйста кто знает!
Lapp
Открой, например, FPC и зайди в Options - Compiler - Code generation.
Ты увидишь установки на определенный тип проца. Это довольно грубая настройка. Но если ты хочешь, чтобы твоя прога заведомо выполнялась на большинстве машин, ты занизишь уровень - может, до 386 (вряд ли стоит сейчас). Серьезное приложение (коммерческое), конечно, компилится более сложным образом и содержит вставки кода для разных процов (если нужно). Некоторые модули оно может настраивать в процессе инсталляции, некоторые так и содержат лишний код, который не используют - воплощение зависит от программеров. Главное же то, что серьезные приложения пишутся и компилятся серьезно smile.gif. Оптимизация под определенный тип проца (или под несколько типов) - это отдельная (и немалая) работа..
Dr.Bugy
Я так понимаю Делфи использует довольно низкий уровень(во всяком случае по умолчанию) ведь экзешники одинаково идут и на пнях и АМДшниках.
Dr.Bugy
Возник сопутствующий вопрос:
А какие параметры в настройках компиллятора нужно поставить чтобы бинарник получался "наилудшим"или как там, для работы на Интел Рентиум (1,2,3) и АМД Атхлонах?
xds
Все перечисленные микропроцессоры в первую очередь - представители семейства* x86, а уже во вторую - самостоятельные торговые марки. Различия в системах команд в большей степени касаются арифметики. Компилятор генерирует код x86 и, на своё усмотрение, может использовать оптимизации на основе тех или иных расширений (e. g. MMX, 3D Now, etc...). Компилятор также может генерировать код, который в зависимости от конфигурации оборудования, на котором он выполняется, будет использовать те или иные расширения базовой системы команд. Такой подход используется уже давно - например, BP можно сконфигурировать (опциями {$E+N+}), на автоматическую настройку сгенерированного кода на отсутствие или наличие 80x87. К слову, последний в мадших членах семейства x86 представлял собой расширение, выполненное в виде отдельной микросхемы.

* - в данном случае термин "семейство" корректен отчасти, т. к. процессоры Intel и AMD не образуют единого модельного ряда. Правильнее так - семейство микропроцессоров с системой команд, совместимой с x86.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.