The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск GNU Mes 0.23, инструментария для самодостаточной сборки дистрибутивов, opennews (??), 15-Мрт-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


178. "Выпуск GNU Mes 0.23, инструментария для самодостаточной сбор..."  +/
Сообщение от n00by (ok), 16-Мрт-21, 15:52 
>> У них рекурсия заклинила.
> Никто не смог написать хоть простейший компилятор C на ASM!

На flat assembler макросами реализуется похожий на Си язык. Определения переменных, функций, условные операторы и вызовы. Из-за ограничений fasm-а вместо { } придётся использовать символьные токены, а аргументы функций указывать в угловых скобках:

printf <"Hello">;

В новой версии (fasm g) больше возможностей, но я его толком не смотрел.

В обшем, не пишут, не потому что "не смогли", а поскольку не принято писать лексеры ручками.

Ответить | Правка | Наверх | Cообщить модератору

181. "Выпуск GNU Mes 0.23, инструментария для самодостаточной сбор..."  +/
Сообщение от Аноним (185), 16-Мрт-21, 16:34 
"After being told for months there is no way to write a proper C compiler in assembly and months of research without any human written C compilers in assembly found."
https://github.com/oriansj/stage0

А вот компилятор Lisp на ASM написать удалось быстро:
"The next recommendation in bootstrapping was Lisp, so efforts were taken to design the most minimal Lisp with all of the functionality described in the original Lisp papers. The task was completed relatively quickly compared to the FORTH and even had enhancements such as a compacting garbage collector."

Из этого следует что писать первичный компилятор C лучше на Lisp (Scheme).

Ответить | Правка | Наверх | Cообщить модератору

206. "Выпуск GNU Mes 0.23, инструментария для самодостаточной сбор..."  +/
Сообщение от n00by (ok), 17-Мрт-21, 13:25 
> "After being told for months there is no way to write a
> proper C compiler in assembly and months of research without any
> human written C compilers in assembly found."
> https://github.com/oriansj/stage0

Билл Гейтс вроде на ассемблере написал свой Бейсик для Альтаира, но исходники не выложил. Для железа посерьёзнее на асме не писали из соображений экономии времени.

> А вот компилятор Lisp на ASM написать удалось быстро:

Не так уж и быстро. В lisp.s почти 3500 строк кода.

Starting to implement lisp interpreter in assembly
oriansj committed on 5 Feb 2017

Release 0.0.9
oriansj committed on 19 Aug 2017

> Из этого следует что писать первичный компилятор C лучше на Lisp (Scheme).

Это следует из общих соображений:
1. писать компилятор проще на высокоуровневом языке;
2. транслятор LISP проще чем транслятор С.

Ответить | Правка | Наверх | Cообщить модератору

207. "Выпуск GNU Mes 0.23, инструментария для самодостаточной сбор..."  +/
Сообщение от Аноним (207), 17-Мрт-21, 14:47 
FORTH говорят тоже подойдет. Они с Lisp не только высокоуровневые но и кросплатформенные. А ASM прибит гвоздями к архитектуре. Хорошо, что макросы M1 сделали платформонезависимыми.

А Столман первый компилятор gcc на Lisp собрал?

Ответить | Правка | Наверх | Cообщить модератору

211. "Выпуск GNU Mes 0.23, инструментария для самодостаточной сбор..."  +/
Сообщение от n00by (ok), 17-Мрт-21, 15:20 
> FORTH говорят тоже подойдет. Они с Lisp не только высокоуровневые но и
> кросплатформенные. А ASM прибит гвоздями к архитектуре. Хорошо, что макросы M1
> сделали платформонезависимыми.

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

> А Столман первый компилятор gcc на Lisp собрал?

Не знаю, но думаю, что да. Насколько понимаю, Десятое правило Гринспена выросло из идеи, что низкий уровень следует писать на ассемблере, а высокоуровневую логику на LISP. Ассемблер заменили на Си, поскольку тот не привязан к процессору при близких возможностях.

Ответить | Правка | Наверх | Cообщить модератору

214. "Выпуск GNU Mes 0.23, инструментария для самодостаточной сбор..."  +/
Сообщение от Аноним (213), 17-Мрт-21, 15:37 
> FORTH говорят тоже подойдет.

Вон там https://github.com/oriansj/stage0 написано что именно говорили, но как до дела - слились. Поэтому оставлено как исторический артефакт, желающих попробовать что-то кроме рассказов про дойку кур.

Ответить | Правка | К родителю #207 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру