--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/8cbeffe0-7bec-4bdd-8d47-cd4578e2abc9n%40googlegroups.com.
Любопытно. А нет ли смысла нечто такое использовать для обучения? Я так понимаю что изначально это был до предела упрощенный (без типовой?) Си?
--
А как ты разобрался с фигурными скобками?
Раз уж у нас тут постепенно актуализировалась тема написания компиляторов, я тоже увлёкся и реализовал давнишнюю мечту: портонул Би с PDP-7 на БЭСМ-6.
Исходник компилятора: b-besm.b
Проект на Гитхабе: besm6/b-compiler
--Сергей
Раз уж у нас тут постепенно актуализировалась тема написания компиляторов, я тоже увлёкся и реализовал давнишнюю мечту: портонул Би с PDP-7 на БЭСМ-6.
Исходник компилятора: b-besm.b
Проект на Гитхабе: besm6/b-compiler
--Сергей
Да, интересная тема, никаких проблем с char :)
А почему в коде все взятия адреса элемента массива заменены на арифметику указателей?
И пробелы местами удалены, например во всех return ?
При переносе что-то было урезано?
Интересно, а что за соглашение о вызовах? С чем совместимо?
Жалко, а почему не ПАСКАЛЬ? Тогда совместимость была бы лучше и с ПАСКАЛем и ФОРТРАНом ?
On Sunday, April 27, 2025 at 4:35:57 AM UTC-7 oxy...@gmail.com wrote:А почему в коде все взятия адреса элемента массива заменены на арифметику указателей?Наверное вы не то сравниваете. Вот оригинальный Би для pdp7: b.bА вот что получилось для бэсм6: b-besm.bИзначально было: np = rp + 2;Это работает на словных машинах. Но на Линуксе x86_64 получается некорректный указатель. Вместо инкремента на два слова выходит инкремент на два байта.Все такие места я переделал как: np = &rp[2];Теперь работает и на Линуксе тоже. Компилятор автоматически домножает индекс массива на размер слова.
И пробелы местами удалены, например во всех return ?Пробелы наоборот вставлены, для лучшей читабельности.При переносе что-то было урезано?Ничего не урезано, но добавлено несколько фич. Символы подчерк и доллар в именах. Операции сдвига и инкремента-декремента. Операция ?:.
--Сергей
понедельник, 28 апреля 2025 г. в 00:45:59 UTC+2, serge.v...@gmail.com:
Все такие места я переделал как: np = &rp[2];
Теперь работает и на Линуксе тоже. Компилятор автоматически домножает индекс массива на размер слова.
А можно подробнее, какой компилятор на Линуксе?
Ничего не урезано, но добавлено несколько фич. Символы подчерк и доллар в именах. Операции сдвига и инкремента-декремента. Операция ?:.Понятно, видно много изменений, я подумал что что-то не удалось портировать.
On Saturday, May 3, 2025 at 1:26:37 PM UTC-7 oxy...@gmail.com wrote:Жалко, а почему не ПАСКАЛЬ? Тогда совместимость была бы лучше и с ПАСКАЛем и ФОРТРАНом ?Главные две проблемы, которые должно решать соглашение о связях для Би:- чтобы функции можно было вызывать как процедуры, игнорируя результат;
- чтобы работал printf() с переменным числом аргументов.
Ни Паскалевские, ни Фортрановские соглашения тут не годятся, увы.
--Сергейпонедельник, 28 апреля 2025 г. в 03:35:21 UTC+2, serge.v...@gmail.com:On Sunday, April 27, 2025 at 4:55:48 AM UTC-7 oxy...@gmail.com wrote:Интересно, а что за соглашение о вызовах? С чем совместимо?Это я наваял по старой памяти, наподобие сохранившихся csave и cret от Эльбруса-Б. Совместимо с Фортраном в одну сторону.Из Би можно вызывать фортрановские процедуры без параметров, и наоборот. В исходниках read() можно видеть, как вызывается monread_(). Подчерк превращается в звёздочку в Мадлене, получается MONREAD*.Из Би можно вызывать фортрановские функции с одним параметром - непосредственно. В качестве параметра надо передавать его адрес. Можно вызывать фортрановские процедуры с одним параметром, добавляя лишний первый аргумент. В функции init() так вызывается WBEGIN, а в flush() - WRCARD.
--Сергей
On Sunday, May 4, 2025 at 1:10:46 AM UTC-7 oxy...@gmail.com wrote:понедельник, 28 апреля 2025 г. в 00:45:59 UTC+2, serge.v...@gmail.com:Все такие места я переделал как: np = &rp[2];Теперь работает и на Линуксе тоже. Компилятор автоматически домножает индекс массива на размер слова.А можно подробнее, какой компилятор на Линуксе?Вот этот: https://github.com/Spydr06/BCause
Ничего не урезано, но добавлено несколько фич. Символы подчерк и доллар в именах. Операции сдвига и инкремента-декремента. Операция ?:.Понятно, видно много изменений, я подумал что что-то не удалось портировать.Всё отлично легло на БЭСМ.
--Сергей
4 мая 2025 г., в 11:24, Alex Loktionoff <oxy...@gmail.com> написал(а):
Жалко, а почему не ПАСКАЛЬ? Тогда совместимость была бы лучше и с ПАСКАЛем и ФОРТРАНом ?Главные две проблемы, которые должно решать соглашение о связях для Би:- чтобы функции можно было вызывать как процедуры, игнорируя результат;Результат возвращается в аккумуляторе на ФОРТРАНе, игнорировать очень просто.- чтобы работал printf() с переменным числом аргументов.Но в Пиринском паскале было возможно вызывать функцию, передавая разное количество аргументов.Ни Паскалевские, ни Фортрановские соглашения тут не годятся, увы.Сергей, можно продолжить дискуссию в теме про соглашениях о вызовах?Мне это очень интересно, и думаю всем будет полезно.
Пиринский паскаль мог вызывать ФОРТРАН и АЛГОЛ, хотя с расширенными словами FORTRAN.
Хотелось бы прийти к общему знаменателю в теме
и реализовать в новописном компиляторе: https://groups.google.com/g/besm6/c/LJ91waEdhzE--СергейИнтересно, а что за соглашение о вызовах? С чем совместимо?Это я наваял по старой памяти, наподобие сохранившихся csave и cret от Эльбруса-Б. Совместимо с Фортраном в одну сторону.Из Би можно вызывать фортрановские процедуры без параметров, и наоборот. В исходниках read() можно видеть, как вызывается monread_(). Подчерк превращается в звёздочку в Мадлене, получается MONREAD*.Из Би можно вызывать фортрановские функции с одним параметром - непосредственно. В качестве параметра надо передавать его адрес. Можно вызывать фортрановские процедуры с одним параметром, добавляя лишний первый аргумент. В функции init() так вызывается WBEGIN, а в flush() - WRCARD....--СергейРаз уж у нас тут постепенно актуализировалась тема написания компиляторов, я тоже увлёкся и реализовал давнишнюю мечту: портонул Би с PDP-7 на БЭСМ-6.
Исходник компилятора: b-besm.b
Проект на Гитхабе: besm6/b-compiler...--Сергей
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ceb890e0-646b-4d67-a9da-d1f2e1a60dafn%40googlegroups.com.
воскресенье, 4 мая 2025 г. в 01:42:15 UTC+2, serge.v...@gmail.com:
Главные две проблемы, которые должно решать соглашение о связях для Би:
- чтобы функции можно было вызывать как процедуры, игнорируя результат;
Результат возвращается в аккумуляторе на ФОРТРАНе, игнорировать очень просто.
- чтобы работал printf() с переменным числом аргументов.Но в Пиринском паскале было возможно вызывать функцию, передавая разное количество аргументов.
Ни Паскалевские, ни Фортрановские соглашения тут не годятся, увы.Сергей, можно продолжить дискуссию в теме про соглашениях о вызовах?Мне это очень интересно, и думаю всем будет полезно.Пиринский паскаль мог вызывать ФОРТРАН и АЛГОЛ, хотя с расширенными словами FORTRAN.Хотелось бы прийти к общему знаменателю в теме и реализовать в новописном компиляторе: https://groups.google.com/g/besm6/c/LJ91waEdhzE
На самом деле Фортран мог вызывать Алгол через CALL ALPROC, согласно Мазному, и мог вызывать паскалевские программы (от которых предварительно тем или иным способом был откушен вход PROGRAM, разумеется) как процедуры, согласно Пирину.
6 мая 2025 г., в 01:53, Serge Vakulenko <serge.v...@gmail.com> написал(а):
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/b6d660e2-0fe9-425b-9af1-e06f7303a6b5n%40googlegroups.com.
мы пробовали…феерическая фигня, в реальной жизни неприменимая никак…сделана была явно «ради пущей пущести»… :)реально работали в Алголе-ГДР вызовы в режиме ‘CODE’ в обе стороны (Фортран-Алгол и Алгол-Фортран) ив режиме ‘ALGOL’ ( Алгол-Алгол)
6 мая 2025 г., в 21:12, Leo B. <leo...@gmail.com> написал(а):
On Tuesday, May 6, 2025 at 10:48:24 AM UTC-7 ReedCat wrote:мы пробовали…феерическая фигня, в реальной жизни неприменимая никак…сделана была явно «ради пущей пущести»… :)реально работали в Алголе-ГДР вызовы в режиме ‘CODE’ в обе стороны (Фортран-Алгол и Алгол-Фортран) ив режиме ‘ALGOL’ ( Алгол-Алгол)Василий,Сконструируй, пожалуйста, пример вызова алгольной процедуры с параметрами из Фортрана в режиме 'CODE’.
С помощью онлайн-эмулятора https://mailcom.com/besm6/runitnew.cgi , если под рукой нет другого.Спасибо,Leo
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ba2cd03a-9a48-4de3-9b4e-6ee17d299804n%40googlegroups.com.
6 мая 2025 г., в 21:12, Leo B. <leo...@gmail.com> написал(а):
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ba2cd03a-9a48-4de3-9b4e-6ee17d299804n%40googlegroups.com.
7 мая 2025 г., в 00:16, Leo B. <leo...@gmail.com> написал(а):
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/dd5aa9e9-2ba4-4b3c-9b7b-12eb704ccb39n%40googlegroups.com.