13 февр. 2023 г., в 22:57, Alex Loktionoff <oxy...@gmail.com> написал(а):
Была ли совместимость между языками на уровне процедур?
эти все три были…- FORTRAN, Pascal, Algol
Можно здесь добавить ссылку на документацию?
Или описать какие регистры должен был сохранять ведущая, какие ведомая.
В каком порядке передавались параметры на стеке и т.п.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
те, которые были, например, внутри «МОниторной системы «ДУБНА» - были совместимы по вызовам13 февр. 2023 г., в 22:57, Alex Loktionoff <oxy...@gmail.com> написал(а):Была ли совместимость между языками на уровне процедур?там было общее соглашение по вызовам.эти все три были…- FORTRAN, Pascal, Algol
--с другими системами - там вообще не было таких задач, потому как они все были моноязыковыми…что БЕМШ, что Алгол-БЭСМ…Найдите книжку «Г.Л.Мазный «ПРограммирование на БЭСМ-6 в Мониторной системе «Дубна»Можно здесь добавить ссылку на документацию?там все очень подробно и хорошо расписано.это сильно зависело от языка…Или описать какие регистры должен был сохранять ведущая, какие ведомая.как правило, считалось, про подпрограмма _не_имеет_ права трогать никакие регистры не сохранив их предварительно.а 15-й (17(8)) - так вообще табу, потому как это указатель стека.не помню точно, но, вроде в прямом порядке…В каком порядке передавались параметры на стеке и т.п.см. книжку выше, там точно указано.--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---ds[jd ghjlt
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/81EDF1A7-8ABF-422A-A217-963B135AE2C5%40gmail.com.
14 февр. 2023 г., в 00:11, Sergey Ryzhkov <sir...@gmail.com> написал(а):
пн, 13 февр. 2023 г., 20:45 Василий Долматов <vdol...@gmail.com>:те, которые были, например, внутри «МОниторной системы «ДУБНА» - были совместимы по вызовам13 февр. 2023 г., в 22:57, Alex Loktionoff <oxy...@gmail.com> написал(а):Была ли совместимость между языками на уровне процедур?там было общее соглашение по вызовам.эти все три были…- FORTRAN, Pascal, AlgolЭто не совсем так, скорее вообще не так. Как то были совместимы Фортраны в МС Дубна между собой и они же как тот, наверное, с Паскаль-Монитором, но библиотеки они все равно тащили разные, а Паскаль-Монитор лично я получил уже тогда когда это было не очень актуально уже и как там надо было передавать параметры не знаю. Алгол (точнее все его варианты) и Паскаль автокод, на котором написано все осмысленное паскалевское, включая Джина были все вещью в себе. В МС Дубна Алгола вроде не было совсем.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CALUV2czbWh01_gfegdUV5t8j3o-6nNiL5htiwwT7RpKag2gjkQ%40mail.gmail.com.
14 февр. 2023 г., в 00:22, Sergey Ryzhkov <sir...@gmail.com> написал(а):
Это все про МС Дубна, естественно, там была куча библиотек, больше математических, гарантировался их правильный вызов из любого Фотртрана. Но базовым был Фортран Дубна, хоть он и был самым примитивным. Вроде в какой то момент была попытка сделать оптисюмищирующий компилятор именно Дубенского Фортрана, но чем оно кончилось - не помню.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CALUV2cwAsMx46kPqrfjgHDfP2vzescbbmTM%2BCzBCrdEfOJGH-A%40mail.gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/B8AD0F9E-CF9D-4536-BCE1-72548AE8F8D0%40gmail.com.
14 февр. 2023 г., в 00:27, Sergey Ryzhkov <sir...@gmail.com> написал(а):
Иш какая шустрая эта немчура. Но все равно, как то оно все было еще более нищево даже по сравнению с Паскаль Монитором. До меня Алгол ГДР не дошел вообще, но мы и не искали, время прошло. :(
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CALUV2cwH15keEH%2BK%3DHT_7nvEvNAb6fiHE3Vo8i%3DhyLj9vDX1yg%40mail.gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/04A0148B-24D9-4A74-80A9-ECC5116E9E69%40gmail.com.
14 февр. 2023 г., в 01:25, Sergey Ryzhkov <sir...@gmail.com> написал(а):
Мы про какие годы говорим.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CALUV2czoF5cYus%2B72h%2B6rfuaH1GBTUT8O4DY03gwUQ2-8GGs-w%40mail.gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CALUV2czbWh01_gfegdUV5t8j3o-6nNiL5htiwwT7RpKag2gjkQ%40mail.gmail.com.
«Паскаль-Автокод» - на порядок более нишевый язык… :) нигде ни для чего полезного не использовался. :)
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e974b389-b9bc-426f-bfb9-acfb6a7ce4f9n%40googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e974b389-b9bc-426f-bfb9-acfb6a7ce4f9n%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/a324544a-919c-4d1b-b2d0-35971ca5d465n%40googlegroups.com.
Согласно 5.1.0 Г.Л. Мазный 1978 М1-7 сохраняемые, М8-М14 временные, М13 возврата как они используются в подпрограммах это уже неважно /*индекс цикла или база фрейма*/
Для С с переменным количеством параметров это не очень годиться, так как на вершине последний параметр и не ясно сколько их. Но можно поступить как в первом компиляторе Applе - последним запихивать количество аргументов :)
Еще печаль, что нельзя сразу индексный М регистр записать/прочитать в память или стек.
Есть ясность что и когда сохранять. Есть заморочка с процедурой/функцией, что-то я не понял почему есть разница +/-1 указателя стека при возврате. Согласно 5.2 при вызове процедура первым записывается Сумматор, т.е. последний параметр всегда в Сумматоре?
FUNCTION S(A, B, C) ->
,STX, C
,STX, B
,STA, A
В 5.4.0 похоже при вызове процедуры сначала записывается мусор потом параметры?
CALL S(A, B, C) ->
14 ,VTM, A
,ITS, 14 #вот тут мусор сумматора в стек!?! это чтоб процедура потом 15 XTA восстановила сумматор?а если он ненужен? почему нет этого кода после CALL в примере автокода?
14,VTM, B
,ITS,14
14,VTM, C
,ITS,14
,CALL, S
В 5.4.0 в функции
X = S(A, B, C) ->
14 ,VTM, A
,ITA, 14
Согласно 5.1.0 Г.Л. Мазный 1978 М1-7 сохраняемые, М8-М14 временные, М13 возврата как они используются в подпрограммах это уже неважно /*индекс цикла или база фрейма*/
Для С с переменным количеством параметров это не очень годиться, так как на вершине последний параметр и не ясно сколько их. Но можно поступить как в первом компиляторе Applе - последним запихивать количество аргументов :)
Еще печаль, что нельзя сразу индексный М регистр записать/прочитать в память или стек.
Есть ясность что и когда сохранять. Есть заморочка с процедурой/функцией, что-то я не понял почему есть разница +/-1 указателя стека при возврате. Согласно 5.2 при вызове процедура первым записывается Сумматор, т.е. последний параметр всегда в Сумматоре?
FUNCTION S(A, B, C) ->
,STX, C
,STX, B
,STA, A
В 5.4.0 похоже при вызове процедуры сначала записывается мусор потом параметры?
CALL S(A, B, C) ->
14 ,VTM, A
,ITS, 14 #вот тут мусор сумматора в стек!?! это чтоб процедура потом 15 XTA восстановила сумматор?а если он ненужен? почему нет этого кода после CALL в примере автокода?
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ab0329ce-0da1-4290-9a25-a5fa1fc8a87cn%40googlegroups.com.
Согласно 5.1.0 Г.Л. Мазный 1978 М1-7 сохраняемые, М8-М14 временные, М13 возврата как они используются в подпрограммах это уже неважно /*индекс цикла или база фрейма*/
Для С с переменным количеством параметров это не очень годиться, так как на вершине последний параметр и не ясно сколько их. Но можно поступить как в первом компиляторе Applе - последним запихивать количество аргументов :)
Еще печаль, что нельзя сразу индексный М регистр записать/прочитать в память или стек.
Есть ясность что и когда сохранять. Есть заморочка с процедурой/функцией, что-то я не понял почему есть разница +/-1 указателя стека при возврате. Согласно 5.2 при вызове процедура первым записывается Сумматор, т.е. последний параметр всегда в Сумматоре?
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/f3df960b-8ebf-42e1-a45e-c858347c8faan%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/f3df960b-8ebf-42e1-a45e-c858347c8faan%40googlegroups.com.
Признаться что помню на 100 не могу, что-то в памяти щелкнуло по поводу сумматора при вызове подпрограмм (это только фортран конечно же), нашел у Мазного на стр. 189 и прогнал тест, прилагается, яйцами и помидорами в авторов компилятора просьба не кодать, оно без оптимизации.
М.П.--On Wed, Feb 15, 2023 at 12:55 PM Leo B. <leo...@gmail.com> wrote:--On Wednesday, February 15, 2023 at 12:24:53 PM UTC-8 BOPOHOK wrote:ЕМНИП, где-то не то у Салтыкова, не то у Мазного было явно написано, что вызов фортрановской процедуры сохраняет сумматор. Миша Попов, наверное, точнее помнит.Более конкретно там написано примерно то, что процедура без параметров, которую предполагается вызывать из фортрана, должна сама сохранять сумматор при входе и восстанавливать его при выходе.Вопрос в том, зачем это было бы нужно. Наследие CDC, я полагаю, а уж там какая причина - покрыто мраком.Leo
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/f3df960b-8ebf-42e1-a45e-c858347c8faan%40googlegroups.com.
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y5_Rv2keHL_QD%3Dk40ik43SA-XgxA3_%3D4Xv1Os7W_DijWQ%40mail.gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzufd9pYQNaXxrRALPHMfP0ogiU0LbGHZd_6cGhAMj6JCvA%40mail.gmail.com.
С оптимизацией результат такой же, а бот немцы с оптимизацией.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y7BPBCyk12RnpTSkmu2ZNNXqLC2HF6BxTUBgHN0WeezEg%40mail.gmail.com.
Благодаря помощи в ветке про эмулятор https://groups.google.com/g/besm6/c/WfIQqvmNAUYТеперь у меня есть возможность запускать на трансляцию программы и смотреть листинг ассемблера.Мне больше всего понравился ГДРовский ФОРТРАН, он как-то понятней ассемблер генерирует.Пока как рабочий вариант принимаю соглашение вызовов внешних процедур/функций - ФОРТРАН-овский.А для внутренних еще посмотрим что получше, в АСТР-е неплохой формат вызовов...Захотелось написать свой ФОРТРАН для БЭСМ, даже название придумал forwhat :D
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/1cda06a1-fbcc-499e-b094-ac37514f8d3en%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/64604959-7ca9-4277-ac2e-01f2b2ba6a02n%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e5a445c2-1a1b-4ded-96cb-3070e524f0e1n%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e5a445c2-1a1b-4ded-96cb-3070e524f0e1n%40googlegroups.com.
Не взрослея, там играют дети,
И один из них, наверно, я.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e5a445c2-1a1b-4ded-96cb-3070e524f0e1n%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/2625518f-9f89-446f-aaf2-25c1d531b87an%40googlegroups.com.
On Saturday, February 18, 2023 at 11:01:30 AM UTC-8 oxy...@gmail.com wrote:Благодаря помощи в ветке про эмулятор https://groups.google.com/g/besm6/c/WfIQqvmNAUYТеперь у меня есть возможность запускать на трансляцию программы и смотреть листинг ассемблера.Мне больше всего понравился ГДРовский ФОРТРАН, он как-то понятней ассемблер генерирует.Справедливости ради, наиболее оптимизирующим Фортран-компилятором для БЭСМ-6 был ФОРЕКС ИПМ АН СССР.Самая свежая имеющаяся у нас версия вызывается в МС Дубна командой*trans:forex3*,,411550Пока как рабочий вариант принимаю соглашение вызовов внешних процедур/функций - ФОРТРАН-овский.
Передача всего подряд, включая константы, по ссылке - это по нынешним меркам, безумие. А со смесью ссылок и значенийполучается практически в точности, как в Паскале.Leo
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/4f2c1909-1c8e-46ce-aa21-b67c332e0b7bn%40googlegroups.com.
19 февр. 2023 г., в 17:17, Alex Loktionoff <oxy...@gmail.com> написал(а):
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ca4bea91-0a00-4a2c-8113-446a8fd64000n%40googlegroups.com.
20 февр. 2023 г., в 10:25, Alex Loktionoff <oxy...@gmail.com> написал(а):
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/84858f80-4e79-44d7-a1a2-268b9595ee68n%40googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzuf7khgo2RvZx8giyhRAfurF8V8QKcLk1A1-7hH9Nwnnpg%40mail.gmail.com.
*NАМЕ FОRЕХ
*САLL УЕSМЕМОRУ
*ОРТIМ
* NО LISТ
*FULL LISТ
*SУSТЕМ LОАD LISТ
*ТRАNS:FОRЕХ3*,,411550
On Saturday, February 18, 2023 at 11:01:30 AM UTC-8 oxy...@gmail.com wrote:
8, BASE ,*0023B
...
*0007B : , XTA ,*0025B
1, ATX ,50B
1, XTA ,50B
, A+X ,*0026B
1, ATX ,50B
, XTA ,*0027B
1, XTS ,50B
12, VTM ,*OUTPUT*
13, VJM ,P/WI
...
*0023B : , TEXT,8H*OUTPUT*
*0024B : , TEXT,8H OUTPUT
*0025B : , INT ,82
*0026B : , INT ,428
*0027B : , INT ,10
001 РRОGRАМ МАIN
002 I = 3
003 II = NFN(I)
7 , VТМ , *С
С *** SТАТЕМЕNТ 00002 > 00000< ***
7 , ХТА , *DIFF+3
7 , АТХ , I-*С
С *** SТАТЕМЕNТ 00003 > 00001< ***
14 , VТМ , I
, IТА , 14
, САLL, NFN
Посмотрев код генерируемый pascompl и вижу, что как база используется M8 а не М7:
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e6355197-bd1e-4f2b-9b41-2771d3ae7c06n%40googlegroups.com.
Собственно генерацию кода можно основывать на Паскаль-компиляторе, в котором видно, как превращаются в код выражения, условия и т.п. Тонкое место - минимизация команд переключения режимов АУ.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/d1c5e2c4-8dd5-4684-9b2c-a091befff662n%40googlegroups.com.
15 мая 2023 г., в 02:58, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):
On Sun, May 14, 2023 at 4:04 PM Leo B. <leo...@gmail.com> wrote:Собственно генерацию кода можно основывать на Паскаль-компиляторе, в котором видно, как превращаются в код выражения, условия и т.п. Тонкое место - минимизация команд переключения режимов АУ.Я бы ещё порекомендавал не концентрироваться именно на МАДЛЕНе, но выделить это в abstraction layer..
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzufUqDcnzLAeVxY3wH6i4_QeBLrbwaBjrAAfU5u-tXe_4w%40mail.gmail.com.
15 мая 2023 г., в 02:58, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 4:04 PM Leo B. <leo...@gmail.com> wrote:Собственно генерацию кода можно основывать на Паскаль-компиляторе, в котором видно, как превращаются в код выражения, условия и т.п. Тонкое место - минимизация команд переключения режимов АУ.Я бы ещё порекомендавал не концентрироваться именно на МАДЛЕНе, но выделить это в abstraction layer..:) :) :) О-о-о!!! Жоголевское «Ядро ТК» начало проглядывать :)
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/7C03175C-C44B-406A-B3C2-C0BA9C2E5F63%40gmail.com.
15 мая 2023 г., в 08:04, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):
On Sun, May 14, 2023 at 9:37 PM Василий Долматов <vdol...@gmail.com> wrote:15 мая 2023 г., в 02:58, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 4:04 PM Leo B. <leo...@gmail.com> wrote:Собственно генерацию кода можно основывать на Паскаль-компиляторе, в котором видно, как превращаются в код выражения, условия и т.п. Тонкое место - минимизация команд переключения режимов АУ.Я бы ещё порекомендавал не концентрироваться именно на МАДЛЕНе, но выделить это в abstraction layer..:) :) :) О-о-о!!! Жоголевское «Ядро ТК» начало проглядывать :)Вот это я не понял. Расскажи.
Но я-то вот о чём.В какой-то момент, когда лобачёвский C compiler для Эльбруса Б уже был, а володинского ещё не было, я попытался "подковать" лобачёвский компилятор так, чтобы вместо юниксного ассемблера он выдавал "ассемблер Рачинского".И...ничего не вышло, потому что лобачёвский компилятор пользовался некоторыми нетривиальными фичерами юниксного ассемблера, которые "с первого наскока" было не так просто запихнуть в рамки ассемблера Рачинского.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzufSKPrg11AsHYPw-fkVOHAQvcNwzD73%2B8gAJgxAXeuhqQ%40mail.gmail.com.
ну, когда мы с тобой еще были студентами, зав.кафедрой АЯ ВМК МГУ проф. Е.А.Жоголев двигал тему о том, что нужно сделать «универсальный технологический комплекс» для работы на всех имеющихся ЭВМ на всех известных языках программирования, состоящий из его «ядра», которое обрабатывало бы алгоритмы, выраженные на некоем внутреннем мета-языке», набора входных конвертеров, преобразующих тексты из любых языков программирования в этот мета-язык и набора кодогенераторов, которые алгоритмы, сгенерированные этим «ядром ТК», конвертировали бы в последовательность машинных команд для конкретной ЭВМ.15 мая 2023 г., в 08:04, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 9:37 PM Василий Долматов <vdol...@gmail.com> wrote:15 мая 2023 г., в 02:58, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 4:04 PM Leo B. <leo...@gmail.com> wrote:Собственно генерацию кода можно основывать на Паскаль-компиляторе, в котором видно, как превращаются в код выражения, условия и т.п. Тонкое место - минимизация команд переключения режимов АУ.Я бы ещё порекомендавал не концентрироваться именно на МАДЛЕНе, но выделить это в abstraction layer..:) :) :) О-о-о!!! Жоголевское «Ядро ТК» начало проглядывать :)Вот это я не понял. Расскажи.:)вот именно существование вот таких приколов и заставляло относиться к усилиям Е.А.Жоголева (и тех аспирантов, которых он на это властью своей подрядил), как минимум с улыбкой. :)Но я-то вот о чём.В какой-то момент, когда лобачёвский C compiler для Эльбруса Б уже был, а володинского ещё не было, я попытался "подковать" лобачёвский компилятор так, чтобы вместо юниксного ассемблера он выдавал "ассемблер Рачинского".И...ничего не вышло, потому что лобачёвский компилятор пользовался некоторыми нетривиальными фичерами юниксного ассемблера, которые "с первого наскока" было не так просто запихнуть в рамки ассемблера Рачинского.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/5063F8FE-6D2B-4EF2-BCA3-3F10D18DBC74%40gmail.com.
ну, когда мы с тобой еще были студентами, зав.кафедрой АЯ ВМК МГУ проф. Е.А.Жоголев15 мая 2023 г., в 08:04, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 9:37 PM Василий Долматов <vdol...@gmail.com> wrote:15 мая 2023 г., в 02:58, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 4:04 PM Leo B. <leo...@gmail.com> wrote:Собственно генерацию кода можно основывать на Паскаль-компиляторе, в котором видно, как превращаются в код выражения, условия и т.п. Тонкое место - минимизация команд переключения режимов АУ.Я бы ещё порекомендавал не концентрироваться именно на МАДЛЕНе, но выделить это в abstraction layer..:) :) :) О-о-о!!! Жоголевское «Ядро ТК» начало проглядывать :)Вот это я не понял. Расскажи.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/5063F8FE-6D2B-4EF2-BCA3-3F10D18DBC74%40gmail.com.
15 мая 2023 г., в 11:25, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):
On Sun, May 14, 2023 at 10:46 PM Василий Долматов <vdol...@gmail.com> wrote:ну, когда мы с тобой еще были студентами, зав.кафедрой АЯ ВМК МГУ проф. Е.А.Жоголев15 мая 2023 г., в 08:04, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 9:37 PM Василий Долматов <vdol...@gmail.com> wrote:15 мая 2023 г., в 02:58, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):On Sun, May 14, 2023 at 4:04 PM Leo B. <leo...@gmail.com> wrote:Собственно генерацию кода можно основывать на Паскаль-компиляторе, в котором видно, как превращаются в код выражения, условия и т.п. Тонкое место - минимизация команд переключения режимов АУ.Я бы ещё порекомендавал не концентрироваться именно на МАДЛЕНе, но выделить это в abstraction layer..:) :) :) О-о-о!!! Жоголевское «Ядро ТК» начало проглядывать :)Вот это я не понял. Расскажи.Сколько я помню, Трифонов, вроде, завкафедрой АЯ был.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzuchU%3D_kc2c5OBOj4RCJWDQ2M2070x8nf2cFPaNR3R6T3w%40mail.gmail.com.
On Saturday, February 18, 2023 at 4:36:09 PM UTC-5 BOPOHOK wrote:On Sat, Feb 18, 2023 at 1:31 PM dvv <dvv...@gmail.com> wrote:
On Saturday, February 18, 2023 at 4:21:11 PM UTC-5 BOPOHOK wrote:On Sat, Feb 18, 2023 at 11:01 AM Alex Loktionoff <oxy...@gmail.com> wrote:Захотелось написать свой ФОРТРАН для БЭСМ, даже название придумал forwhat :DПохвально, но Си был бы полезней.
Для оригинальной шестибайтовой? Это да…У ребят получалось.Ну а чего ж нет? Чай, не бином Ньютона 😁 Только если это будет не gcc или Clang/LLVM, то это будет YABCC (Yet Another BESM C Compiler). Без оптимизации, без всего.
On Saturday, February 18, 2023 at 2:54:01 PM UTC-8 Сергей Рыжков wrote:Так написан же был Вакуленко порт Джонсоновского PCC для БЭСМ. Тексты сохранились?Сохранился только вариант для Э1-КБ. Перехачить обратно, в принципе, можно, но утомительно. И всё равно получится не ANSI С.Можно тупо его немножко поправить и заставить генерить не AS а Madlen. Хотя можно и без мониторки, какой тот вариант ассемблера делал я в свое время, вроде на каком то этапе его даже использовали в проекте Юникс. Но потом вроде переписали. У меня это была адаптация ассемблера Вадима Антонова. Но нужно ли все это?Так и делать Бэббиджевский Difference Engine в железе было "не нужно". Но сделали, чисто по приколу, чтобы посмотреть, как он мог бы работать. Так и здесь - нормального оптимизирующего Си-компилятора для БЭСМ-6 так никогда и не было, но по приколу, чтобы посмотреть, как он мог бы работать,будь тогда доступны известные нам технологии производства компиляторов, вполне можно.Leo
Вообще-то исходники компилятора Си для Э-1КБ сохранились, так что можете посмотреть на соглашение вызовов.
И для БЭСМ-6 компилятор Си тоже имелся. С его помощью Андрей Основич и Володя Молчанов в Новосибирске даже умудрились затащить Unix v6 на реальную БЭСМ в качестве демонстрации идеи. Тот компилятор, увы, канул в лету
Вызов malloc() возвращал словный указатель. Указатели char* имели адрес слова в младших битах и смещение для сдвига в старших битах. Получалось более-менее совместимо с традиционным сишным кодом.
Параметры функций передавались ровно так же в стеке. Но запихивались не в обратном порядке, а в прямом: от первого параметра к последнему. Это позволяло функциям с переменными числом параметров типа printf() легко получить первый параметр. Потому что стек у нас растёт в другую сторону
Дубненский стандарт передачи параметров никак не годился для Си.
пятница, 28 февраля 2025 г. в 23:45:40 UTC+1, serge.v...@gmail.com:Вообще-то исходники компилятора Си для Э-1КБ сохранились, так что можете посмотреть на соглашение вызовов.Можете дать наводку с какого файла начать "заглбляться" чтоб быстрее дойти до соглашения вызовов?
И для БЭСМ-6 компилятор Си тоже имелся. С его помощью Андрей Основич и Володя Молчанов в Новосибирске даже умудрились затащить Unix v6 на реальную БЭСМ в качестве демонстрации идеи. Тот компилятор, увы, канул в летуКруто, это с адресным пространством в 32К слов? Компилятор сам умещался вместе с текстом и генерированным кодом в 32К???
Вызов malloc() возвращал словный указатель. Указатели char* имели адрес слова в младших битах и смещение для сдвига в старших битах. Получалось более-менее совместимо с традиционным сишным кодом.Вот спасибо, чтоб не изобретать, свое. я думал использовать поле мантиссы. Но у них было просто левое и правое слово, так?
Ну и вопрос начинающего, а как быстрее всего получить эти два слова в двух регистрах?Наверно strcat, strcmp, strtok ,были написаны на ассемблере, но все-же как работала адресная арефметика для кода написанного на С?как char *str = malloc(256); это понятно, а как void *ptr = ++str; char *word = ptr; как бы выглядел сгенерированный код на МАДЛЕН?
Параметры функций передавались ровно так же в стеке. Но запихивались не в обратном порядке, а в прямом: от первого параметра к последнему. Это позволяло функциям с переменными числом параметров типа printf() легко получить первый параметр. Потому что стек у нас растёт в другую сторонуНе понял, если первый параметр /*const char *format*/ запихивается первым, то в стеке он в глубине, и непонятно на которой.???
Вообще-то исходники компилятора Си для Э-1КБ сохранились, так что можете посмотреть на соглашение вызовов.И для БЭСМ-6 компилятор Си тоже имелся. С его помощью Андрей Основич и Володя Молчанов в Новосибирске даже умудрились затащить Unix v6 на реальную БЭСМ в качестве демонстрации идеи. Тот компилятор, увы, канул в лету.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/5c049dca-bd60-4417-9c96-e6ba574987e6n%40googlegroups.com.
Да, интересно, никогда еще компиляторов не писал :DЛео, подскажите можно ли в dispak-e провалить чисто код сгенерированный например FORTANом?
Понятно что число команд, но хотяб, чтоб как то потом сравнить, свое поделие с GDR и FOREX.Чтоб выкинуть исполнение транслятора и экстра-кодов, хотя их бы отдельно посчитать?
1 , VТМ , *SНАRЕ
1 , А+Х , I-*SНАRЕ
1 , АТХ , I-*SНАRЕ
Я как-то писал, что при реализации Паскаля остановились в шаге от varargs: https://besm6.dreamwidth.org/25586.html
Бинарников, скомпилированных из С для БЭСМ-6, не осталось.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/0e54c79c-90d1-4293-850b-d712868cec6en%40googlegroups.com.
function foo(n:integer; function bar:real; a, b, c:real):real;
begin
case n of
0: foo := bar;
1: foo := bar(a);
2: foo := bar(a, b);
3: foo := bar(a, b, c)
end
end;
Я как-то писал, что при реализации Паскаля остановились в шаге от varargs: https://besm6.dreamwidth.org/25586.html
Бинарников, скомпилированных из С для БЭСМ-6, не осталось.
Поскольку, в отличие от старого С, всегда известно, фиксированное или переменное количество аргументов у функции, можно делать практически совместимо с Паскалем.LeoOn Saturday, March 1, 2025 at 2:05:53 AM UTC-8 oxy...@gmail.com wrote:Да еще, так как стек растет в верх, то для реализации на С функций с переменным количеством параметров и чтоб va_start() va_arg() работали надо либо пихать параметры с права на лево и реализовывать va_arg() как декремент адреса, либо с лева на право, но еще пихать количество параметров. Надо с этим как-то определиться. Бинарников скомпилированных С компилятором я полагаю не осталось? Тогда может постараться добиться полной совместимости с Паскалем и Фортраном? Ваши предложения относитально порядка и переменного количества?суббота, 1 марта 2025 г. в 10:13:44 UTC+1, Alex Loktionoff:
В архиве текстов ДВС есть printf.txt, сгенерированный Володинским компилятором. Исходный текст там тоже присутствует в комментариях.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ca906d55-6a57-4219-87fa-05997b8f43efn%40googlegroups.com.
можете тут вклеить МАДЛЕН вот этой функции как пример соглашения? думаю так будет проще кто сюда заглянет
* Определения имен регистров
r1# экв 01h
r2# экв 02h
r3# экв 03h
r4# экв 04h
r5# экв 05h
r6# экв 06h
r7# экв 07h
r8# экв 08h
r9# экв 09h
ra# экв 0Ah
fp# экв 0Bh
ap# экв 0Ch //указатель на аргументы /*база стекового фрейма?*/
lr# экв 0Dh //М13 регистр возврата
wr# экв 0Eh //М14 супер временый
sp# экв 0Fh //М15 указатель стека
:; msg_size = sprintf(string, fmt, &args);
сч =string
счм fmt
сдп 3
нтжд
счм =args
счм =3
пв sprintf(lr#)
не понял что означают ra# fp#
и непонятно как делался возврат из функции:
23 entry# внеш '$CENAA'
24 exit# внеш '$CEXAA'
Да интересный ассемблер, очень похож на современный, только с ИТМ сокращениями :(Есть ли готовый скрипт, чтоб ИТМ преобразовать в МАДЛЕН? буду благодарен
и непонятно как делался возврат из функции:
23 entry# внеш '$CENAA'
24 exit# внеш '$CEXAA'
суббота, 1 марта 2025 г. в 22:53:57 UTC+1, serge.v...@gmail.com:On Saturday, March 1, 2025 at 1:04:16 PM UTC-8 BOPOHOK wrote:В архиве текстов ДВС есть printf.txt, сгенерированный Володинским компилятором. Исходный текст там тоже присутствует в комментариях.Вот здесь: https://www.besm6.org/sources/dvs/printf.txt
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/699e0976-f5a5-4aef-beed-c370fab6f53bn%40googlegroups.com.
On Sun, Mar 2, 2025 at 4:42 AM Alex Loktionoff <oxy...@gmail.com> wrote:Да интересный ассемблер, очень похож на современный, только с ИТМ сокращениями :(Есть ли готовый скрипт, чтоб ИТМ преобразовать в МАДЛЕН? буду благодаренА разве есть МАДЛЕН для Эльбруса-Б? Этож не для БЭСМ-6 код.
МАIN : , NАМЕ,
АСС* : , LС , 1
РRОGRА: ,ЕNТRУ,
, LOC , 1000B
MAIN: 7 , VТМ , *С
, XTA , =1234567
, САLL, OKHO
13, VJM , *AL00000
, Z00 , 12345B
*AL00000:13, XTA , -1
, ATI , 8
, САLL, OKHO
, CALL, STOP*
*C : , BSS ,
, ЕND ,
...
LIВRАRУ ОТ 26.02.82 М3
*NО LОАD LISТ
*МАIN МАIN
*ЕХЕСUТЕ
0000000001234567 006 03122 00000 06614 73254 03271 10012 01010 26515 03656 00610 00000 77774 01002 00770 75402
6710100402200000 006 03122 00000 06614 73254 03271 10012 01010 00000 03656 00610 00000 77774 01006 00770 75402
КОНЕЦ ЗАДАЧИ
00411: 00 074 0000 *74
интересно, есть указатель на аргументы и еще и фрейм? разве это не одно и тоже?Положительное смещение от фрейма - одно и отрицательное другое, зачем второй регистр?
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/2a4efc82-131f-49a4-8ecd-c3ac7187ab99n%40googlegroups.com.
Леонид, я думаю что это не offtopic, как-то Вы предлагали хитрый способ передачи количества аргументов во втором полуслове, сразу за CALL. Думаю тоже важно в этой теме привести работающий пример. Подскажите как после CALL объявить константу? У меня с первого раза не вышло: