OSDev
http://osdev.su/

PlutOS
http://osdev.su/viewtopic.php?f=8&t=533
Страница 7 из 9

Автор:  grindars [ 20 июл 2012, 13:23 ]
Заголовок сообщения:  Re: PlutOS

Yoda писал(а):
LLVM всем хороша, кроме того, что это всё-таки текстовая машина и требует синтаксического разбора. Она позиционируется, как промежуточный язык, но на мой взгляд это как раз неудачный подход. Получается сначала компиляция с языка (синтаксический разбор) в язык (второй синтаксический разбор) и потом генерация кода. Байт код позволил бы практически избавиться от второго синтаксического анализа. А так виртуальная машина получается ближе к скриптовым языкам. А вот хорошая бинарная виртуальная машина как раз очень идеально подошла бы в качестве промежуточного уровня между синтаксическим анализом и генерацией кода – для разделения фронтенда и бэкенда при компиляции с любого языка в любую архитектуру.


У LLVM есть bitcode, бинарное представление ее промежуточного языка.

Автор:  Freeman [ 20 июл 2012, 14:47 ]
Заголовок сообщения:  Re: PlutOS

Yoda писал(а):
А вот хорошая бинарная виртуальная машина как раз очень идеально подошла бы в качестве промежуточного уровня между синтаксическим анализом и генерацией кода

Ну, разрабатываемая нами "Единая среда" -- и есть такая промежуточная машина с обратимым байт-кодом. Вот закончим с CoreLib и примемся за реализацию байт-кода в коде, заодно и спецификация прояснится.

Yoda писал(а):
для разделения фронтенда и бэкенда при компиляции с любого языка в любую архитектуру.

Поддержка нескольких языков в байт-коде размывает концепцию: получившийся код не соответствует ни одному языку, и возникает соблазн сделать универсальный язык-монстр, являющийся по совместительству ассемблером байт-кода. А раз появится язык, программистам захочется писать сразу на нем, чтобы быть ближе к виртуальному железу. Ну, если сторонним программистам не захочется, то самому автору -- как пить дать. Он будет тогда "крутой пацан", а все остальные -- "лузеры", не познавшие дзена расово верного языка...

Чтобы не родить монстра, свой язык лучше проектировать одновременно с виртуальной машиной, делая его официальным ассемблером. Без языка никак: не сделаешь по-хорошему -- выйдет по-плохому, и придется или всю жизнь плеваться, или переписывать начисто и рвать зад за совместимость.

Автор:  Yoda [ 20 июл 2012, 17:19 ]
Заголовок сообщения:  Re: PlutOS

Freeman писал(а):
Поддержка нескольких языков в байт-коде размывает концепцию: получившийся код не соответствует ни одному языку

Да он вообще-то и не должен соответствовать. Его задача - низкоуровневое машиннонезависимое представление любого алгоритма. Я думаю, что если не брать в расчёт экстравагантные языки типа Forth, Lisp, Prolog, то почти у всех языков одно и то же семантическое ядро. Вот задача как раз и состоит в том, чтобы максимально близко к машинному уровню (но при этом архитектурно-независимо) выразить это семантическое ядро.

Freeman писал(а):
свой язык лучше проектировать одновременно с виртуальной машиной, делая его официальным ассемблером.

А какой смысл в виртуальной машине, которая годится только для одного языка высокого уровня?

Автор:  Freeman [ 20 июл 2012, 17:51 ]
Заголовок сообщения:  Re: PlutOS

Yoda писал(а):
то почти у всех языков одно и то же семантическое ядро.

Речь про императивные языки?

Yoda писал(а):
А какой смысл в виртуальной машине, которая годится только для одного языка высокого уровня?

Ну, общая машина для императивных языков уже есть -- как раз LLVM. И вполне ничего. Зачем делать еще одну? Тягаться с Университетом Иллинойса? Чисто для развлечения, в качестве "лабораторной работы"?

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

Автор:  Yoda [ 20 июл 2012, 20:28 ]
Заголовок сообщения:  Re: PlutOS

Freeman писал(а):
Речь про императивные языки?

Естественно. Правда среди них тоже есть весьма "неудобные" языки, например, Forth, но я говорю, что если их исключить, то вся основная группа языков внутри себя ничего нового не представляет и очень эффективно компилируется в машинный код традиционных ISA. Разница между ними почти исключительно в представлении этого единого семантического ядра для человека.

grindars писал(а):
У LLVM есть bitcode, бинарное представление ее промежуточного языка.

Прошу прощения за непоследовательное цитирование...
Я, честно говоря, первый раз слышу про двоичное представление. Не нашёл такой инфы ни в вики, ни на оф-сайте... можно конкретную ссылку?

Freeman писал(а):
Ну, общая машина для императивных языков уже есть -- как раз LLVM.

Так я же и говорю - она хороша, даже очень. Но её недостаток в том, что она текстовая.

Freeman писал(а):
Тягаться с Университетом Иллинойса? Чисто для развлечения, в качестве "лабораторной работы"? Нет, я допускаю, конечно, что безвестный русский программист может найти серьезные изьяны в концепциях американского университета, и не сомневаюсь, что сможет реализовать задуманное в коде.

И чего теперь, трястись от преклонения перед Университетом Иллинойса? Я могу сказать, что с такой жизненной установкой ничего нового не сделать. А между тем, жизненная практика показывает, что в основном проекты толкаются одиночками-лидерами, в крайнем случае, двое-трое друзей, вокруг идей которых собираются впоследствии группы. Таких исторических примеров масса - Кен Томпсон, Деннис Ритчи и Дуглас Макилрой, Стив Джобс и Стив Уозняк, Билл Гейтс и Пол Аллен, Братья Джон и Адриан Кармак, одиночка Бьёрн Страуструп, одиночка Линус Торвальдс, да блин, можно долго перечислять. Это конечно не означает, что любой че-к вдруг сразу может стать Биллом Гейтсом, но всё же, эти одиночки откуда-то берутся и считать, что персонально ты ничего нового предложить не можешь – подход, а-приори ведущий к провалу затеи. Вообще я тоже участвовал в университетских проектах и отлично знаю, что никакой фантастики за ними не скрывается, – обычные студики и аспиранты под руководством фанатиков-преподавателей и доцентов 8-).

Freeman писал(а):
Но такой специалист не будет задавать вопросы на форуме.

А где же они тогда общаются? В скайпе? Или вообще ни с кем не общаются? :lol: :mrgreen:

Автор:  grindars [ 20 июл 2012, 21:37 ]
Заголовок сообщения:  Re: PlutOS

Yoda писал(а):
Я, честно говоря, первый раз слышу про двоичное представление. Не нашёл такой инфы ни в вики, ни на оф-сайте... можно конкретную ссылку?


Вот оно. В документации на подсистемы лежит.

Автор:  AlikberOFF [ 20 июл 2012, 23:48 ]
Заголовок сообщения:  PlutOS

Извиняюсь, :mrgreen: я не помешаю дискуссии :?:
Вот, кое-как удалось более-менее красиво переписать почти с нуля симулятор моего ASCII-процессора.
Однако, в отличии от чернового варианта, не реализована организация вложения математическими скобками (...) и т.д.
К тому же, имеются сильные глюки.
Вместо 128 байтной ПЗУ (SMARTIC.rom.mark) пришлось набивать целый килобайт! Чтобы упростить некоторую логику с исключением просчётов.

В целом же, как видно, всё написано очень примитивно. Легко спортируется в любой vhdl-проект. :roll:

Автор:  grindars [ 21 июл 2012, 11:42 ]
Заголовок сообщения:  Re: PlutOS

Кстати, а почему бы не писать этот процессор на HDL и не испытывать его в симуляторе? В той же Xilinx-овой ISE есть ISIM, который вполне подходит для такого.

Автор:  Nable [ 21 июл 2012, 14:24 ]
Заголовок сообщения:  Re: PlutOS

> Нет, я допускаю, конечно, что безвестный русский программист может найти серьезные изьяны в концепциях американского университета, и не сомневаюсь, что сможет реализовать задуманное в коде.
К слову, задумывались над тем сколько в т.ч. русских программистов (да что там программистов, а даже отделов институтов) пилит LLVM? Время одиночек давно уже практически ушло, серьёзные проекты пилят многие люди из разных частей света.

Автор:  Станислав [ 21 июл 2012, 18:21 ]
Заголовок сообщения:  Re: PlutOS

Nable писал(а):
К слову, задумывались над тем сколько в т.ч. русских программистов (да что там программистов, а даже отделов институтов) пилит LLVM? Время одиночек давно уже практически ушло, серьёзные проекты пилят многие люди из разных частей света.

Создать систему может только один человек, ему другие только мешаться будут, а набивать её кодом в рамках созданной системы уже могут и остальные, а если они станут это делать значит система будет признаной, чего хотят все создатели.

Страница 7 из 9 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/