Пишем компилирующий интерпретатор SHABASIC для 8080/8085

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Пишем компилирующий интерпретатор SHABASIC для 8080/8085

Post by Lavr »

Shaos wrote:Короче надо изобрести свой бейсик с построчной компиляцией в шитый код :o
Вот это - зрелая идея! :kruto:
С удовольствием на это посмотрю! :wink:
iLavr
imsushka
Maniac
Posts: 231
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Недокомпьютер nedoPC-85-MK

Post by imsushka »

Shaos wrote:Короче надо изобрести свой бейсик с построчной компиляцией в шитый код :o
ну ваащето и синклеровский и мсх(микрософт) и бк0010 - они фсе такие
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

imsushka wrote:
Shaos wrote:Короче надо изобрести свой бейсик с построчной компиляцией в шитый код :o
ну ваащето и синклеровский и мсх(микрософт) и бк0010 - они фсе такие
а вот нифигулечки - ключевые слова бейсика, представляемые разными байтами не являются "шитым кодом" - мы в каком-то из топиков много лет назад ломали копья на эту тему...

P.S. хотя вроде подход реализованный в бейсиках иногда называют "token threading", но это совсем не то, что я имею вивду - я имею ввиду "subroutine threading" (цепочка вызовов подпрограмм), который сам по себе уже является скомпилированной программой и может исполняться без интерпретатора (см. https://en.wikipedia.org/wiki/Threaded_code)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Недокомпьютер nedoPC-85-MK

Post by Lavr »

Shaos wrote:
imsushka wrote:
Shaos wrote:Короче надо изобрести свой бейсик с построчной компиляцией в шитый код :o
ну ваащето и синклеровский и мсх(микрософт) и бк0010 - они фсе такие
а вот нифигулечки - ключевые слова бейсика, представляемые разными байтами не являются "шитым кодом" - мы в каком-то из топиков много лет назад ломали копья на эту тему...
И там же мы пришли к выводу, что Вильнусский бейсик именно компилирует в шитый код.
Я к этой идее не раз сам возвращался здесь, но ниасилил... :wink:
Вот мне и интересно - как ты это сделаешь... :roll:
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

Да - точно, Вильнусский бейсик - вот чего про него написано:
При запуске программы командой RUN происходит компиляция программы в промежуточный, так называемый шитый код. Шитый код, по сути, представляет собой последовательность адресов вызова подпрограмм и данные для вызовов. При этом транслятор перед исполнением программы переводит все числа во внутренне представление и все выражения — в обратную бесскобочную запись. При выполнении программы исполняющая система производит вызовы указанных подпрограмм и передаёт им подготовленные данные. Таким образом, шитый код выполняется быстрее, чем обычная интерпретация (поскольку при исполнении программы не тратится время на «распознавание» чисел и имён переменных, на преобразование выражений и т. д.), но медленнее, чем программа в машинном коде, полученная на выходе настоящего компилятора.
https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B9%D1%81%D0%B8%D0%BA_%D0%92%D0%B8%D0%BB%D1%8C%D0%BD%D1%8E%D1%81

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

И должна быть возможность сохранить откомпилированную программу "без исходников"
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Недокомпьютер nedoPC-85-MK

Post by Lavr »

Shaos wrote:Да - точно, Вильнусский бейсик ...
А я себе мыслю компиляцию типа как в форте - закончили редактировать строку программы и она хлоп и откомпилировалась в шитый код :)
В общем всегда хочется сначала посмотреть образец - а как они это делали? :roll:
Но у меня так и не случилось... :osad:

А насчет форта - без самогО форта там всё равно евойный код работать не будет... :-?
С шитым кодом, как мне представляется, к программе должен цепляться run-time блок кода,
куда и ведут все вызовы шитого кода.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

Ну райнтайм с базовой математикой и функциями ввода/вывода да будет - хотя если запускать это всё над ShaOS, то всё что надо может быть прямо в ось встроено :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Пишем nedoBasic для 8080/8085

Post by Lavr »

Ну ты попробуй... я с интересом и удовольствием посмотрю. :wink:

Кстати говоря, run-time библиотека VB до некоторых пор была частью ОС Windows.
Я всегда ещё очень удивлялся: VB не установлен, а run-time библиотека VB есть! :roll:

О! Смотри-ка! И у Windows 7 она есть!
vb.PNG
А у меня на машине никаких VB 6.0 не установлено! :esmile:
You do not have the required permissions to view the files attached to this post.
Last edited by Lavr on 31 Jan 2023 21:57, edited 1 time in total.
iLavr
imsushka
Maniac
Posts: 231
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Недокомпьютер nedoPC-85-MK

Post by imsushka »

Shaos wrote:
imsushka wrote:
Shaos wrote:Короче надо изобрести свой бейсик с построчной компиляцией в шитый код :o
ну ваащето и синклеровский и мсх(микрософт) и бк0010 - они фсе такие
а вот нифигулечки - ключевые слова бейсика, представляемые разными байтами не являются "шитым кодом" - мы в каком-то из топиков много лет назад ломали копья на эту тему...

P.S. хотя вроде подход реализованный в бейсиках иногда называют "token threading", но это совсем не то, что я имею вивду - я имею ввиду "subroutine threading" (цепочка вызовов подпрограмм), который сам по себе уже является скомпилированной программой и может исполняться без интерпретатора (см. https://en.wikipedia.org/wiki/Threaded_code)
есть 4 типа шитого кода. это из брусенцова.
я их уже и не помню
прямой - команды проца (вызовы подпрограмм) в перемежку с данными
косвенный - указатели на подпрограммы

вот второй в бейсиках и используется
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

в бейсике токенизированный "не совсем шитый" код - там и не вызовы, и не адреса, а "токены"
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Пишем nedoBasic для 8080/8085

Post by Lavr »

Shaos wrote:в бейсике токенизированный - там и не вызовы, и не адреса, а "токены"
Это смотря в каком бейсике... В QBasic предварительно компилируется в промежуточный Р-код,
ну почти как в Жабе. :o В режиме интерпретации он выполняется быстрее.
А в ехе-шник уже компилируют именно его.

А "токены" - это всего лишь слова бейсика замененные кодами.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

Lavr wrote:Ну ты попробуй... я с интересом и удовольствием посмотрю. :wink:

Кстати говоря, run-time библиотека VB до некоторых пор была частью ОС Windows.
Я всегда ещё очень удивлялся: VB не установлен, а run-time библиотека VB есть! :roll:
Ну вот и мне надо рантайм встроить в ShaOS - буду всем потом рассказывать, что поглядите ка только этот ЯВУ всё умеет без "внешних" библиотек :mrgreen:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

Lavr wrote:
Shaos wrote:в бейсике токенизированный - там и не вызовы, и не адреса, а "токены"
Это смотря в каком бейсике... В QBasic предварительно компилируется в промежуточный Р-код,
ну почти как в Жабе. :o В режиме интерпретации он выполняется быстрее.
А в ехе-шник уже компилируют именно его.

А "токены" - это всего лишь слова бейсика замененные кодами.
Ну ок - в большинстве бейсиков
Так сказать "классический" подход :)

Вот интересное сравнение бейсиков - классических и класса "Tiny Basic":

https://en.wikipedia.org/wiki/Tiny_BASIC

Оказывается самые ранние бейсики были "Compile-and-go" - т.е. компилируемыми в память перед запуском (см. https://en.wikipedia.org/wiki/Compile_and_go_system)

Также в старых бейсиках в IF ... THEN использовался номер строки, куда делается переход (в Электронике МК-85 и по-видимому в Casio было также), а уже в более современных после THEN стало возможным писать выражения, а потом ещё и ELSE появился.

P.S. В МК-85 можно было вот так писать:

Code: Select all

40 IF A=5;IF B=0 THEN 30;B=B-1;GOTO 20
50 IF A=6;IF B=C THEN 30;B=B+1;GOTO 20
т.е. после ; выполняется остаток строки, если условие выполняется, а при наличии THEN делался перескок (получается, что всё что шло после THEN N; как бы ELSE)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Пишем nedoBasic для 8080/8085

Post by Lavr »

Shaos wrote:Ну вот и мне надо рантайм встроить в ShaOS - буду всем потом рассказывать, что поглядите ка только этот ЯВУ всё умеет без "внешних" библиотек :mrgreen:
Есть такая песня: Do It! Do It Again With Love! (c) Raffaella Carrà :ebiggrin:

А ОС Windows, собственно говоря, так и выдумали - система умеет всё, а ваши "программы" - это её
приложения, и пользуются её системными вызовами.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

Lavr wrote:Есть такая песня: Do It! Do It Again With Love! (c) Raffaella Carrà :ebiggrin:
Я вроде её в таком варианте помню:


https://www.youtube.com/watch?v=YnBs1MuGSAA
Italian singer Raffaella Carrà has died July 5, 2021 at the age of 78.
Я тут за главного - если что шлите мыло на me собака shaos точка net