Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2010, 17:37   #1
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию Как компиляторы для языков программирования пишутся на самих себе?

Вот узнал, что компилятор FASM написан на себе самом.
Не могу представить как это. Ну, всмысле, имея уже готовый копилятор того же FASMа, понятное дело, можно написать еще один, на нем же и для него же.
Но как изначально это все выглядит?
bullvinkle вне форума Ответить с цитированием
Старый 16.03.2010, 17:56   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну смотря как глубоко копать. Это ведь не с потолка появилось )) все и сразу. Читать историю надо.
А вариаций как создать первый экземпляр уйма.
BOBAH13 вне форума Ответить с цитированием
Старый 16.03.2010, 18:09   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

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

Цитата:
Наверно имелось в виду, что для этого была использована предыдущая версия компилятора.
Нет. Это автор не правильно понял. Фасм написан на асме, но не самим собой.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 16.03.2010 в 19:15.
ROD вне форума Ответить с цитированием
Старый 16.03.2010, 19:07   #4
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
Сообщение от bullvinkle Посмотреть сообщение
Вот узнал, что компилятор FASM написан на себе самом.
Не могу представить как это.
Наверно имелось в виду, что для этого была использована предыдущая версия компилятора.
*PB* вне форума Ответить с цитированием
Старый 16.03.2010, 19:34   #5
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Цитата:
Фасм написан на асме, но не самим собой.
Ну в википедии написано: "Fasm написан на самом себе".
Ну ладно, допустим, что компилятор какого-то языка написан на предыдущей версии этого же языка, которая не важно на чем написана. Зачем такое извращение? Что дает такой подход? Я всегда был уверен, что хороший компилятор должен быть написан машинными инструкциями, и ни как иначе.
bullvinkle вне форума Ответить с цитированием
Старый 16.03.2010, 19:43   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
Fasm написан на самом себе
подразумевается что он написан на ассемблере, че непонятно то?
NiCola999 вне форума Ответить с цитированием
Старый 16.03.2010, 20:17   #7
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Я всегда был уверен, что хороший компилятор должен быть написан машинными инструкциями, и ни как иначе.
а чем асамблер отличается от машинных инструкций? это только более удобное (для человека) обозначение машинных инструкций, а так, мы пишем чисто машинный код, без промежуточных вариантов.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 16.03.2010, 20:40   #8
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

FASM изначально разрабатывался на TASM-е с режимом IDEAL. С определенной версии он стал способен компилировать самого себя. По правде говоря не так уж и много команд нужно имплементировать что бы получить возможность компилировать такие программы. Это ведь по сути парсер текста.

Цитата:
Я всегда был уверен, что хороший компилятор должен быть написан машинными инструкциями, и ни как иначе.
Я когда то пробовал писать на машинных кодах. После приобретения определенных знаний это вобще без проблем можно делать вручную и почти не запоминать ничего(т.е. пользоваться не списком опкодов, а знаниями принципов построения опкодов). Но чем больше приобретаешь знаний по этой теме - тем больше хочется это автоматизировать и пользоваться хотя бы макросами для построения опкодов. Да конечно одну и ту же инструкцию иногда можно закодировать несколькими опкодами, но это на самом деле не так важно, что б тратить на это время. Тем более это всегда можно сделать вручную там где это требуется.
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 16.03.2010 в 20:47.
Ivan_32 вне форума Ответить с цитированием
Старый 17.03.2010, 11:13   #9
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Думаю, первая программа в этой родословной (какой-нибудь простенький хексовый редактор) была выбита на перфокартах и переписана на такой вот хард:

ds.Dante вне форума Ответить с цитированием
Старый 17.03.2010, 12:48   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Есть определенное правило для языков программирования, ужо и не помню как называется. Это один из показателей "хорошести" языка. В общем язык соответствует там чему-то в том случае, если транслятор с него можно написать на нем самом, например первые бейсики не могли себе этого позволить. Наиболее крут в этом плане Лисп - его на нем самом можно написать на паре страниц кода.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рейтинг популярности языков программирования Lemo Свободное общение 20 03.11.2009 21:15
Изучение нескольких языков программирования Neymexa Свободное общение 6 30.01.2009 15:25
Свободная энциклопедия языков программирования kit1980 Свободное общение 0 05.06.2007 17:53
совмещение 2-х языков программирования fis Общие вопросы Delphi 5 30.01.2007 20:13