Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 16.03.2010, 18:37   #1
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Адрес: Украина, Запорожье
Сообщений: 204
Репутация: 72

icq: 372409276
По умолчанию Как компиляторы для языков программирования пишутся на самих себе?

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

Ну смотря как глубоко копать. Это ведь не с потолка появилось )) все и сразу. Читать историю надо.
А вариаций как создать первый экземпляр уйма.
__________________
Home | Android for food | XWindows Dock | github
BOBAH13 вне форума   Ответить с цитированием
Старый 16.03.2010, 19:09   #3
ROD
Linux C++ Qt ARM
Профессионал
 
Аватар для ROD
 
Регистрация: 30.11.2008
Адрес: У компа
Сообщений: 3,032
Репутация: 849

icq: 380871124
skype: russian_pinky
По умолчанию

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

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

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

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

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

icq: 372409276
По умолчанию

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

icq: 458-666-144
По умолчанию

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

icq: 380871124
skype: russian_pinky
По умолчанию

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

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

icq: 388813333 Отправить сообщение для Ivan_32 с помощью Yahoo
По умолчанию

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


08:22.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.