[image]

Forth - язык нового поколения :)

 
1 2 3 4
+
-
edit
 

zespri

новичок
Кирилл>Можно у тебя побольше узнать о потрохах виртуальной .NET-машины (в английском я не силен)?

Можно, а что конкретно тебя интересует?
   
RU Кирилл #29.09.2004 07:27
+
-
edit
 

Кирилл

втянувшийся

Все :)
Хотя бы азы.
Стековая или смешанная (стеково-регистровая) архитектура?
Как передаются входные и выходные параметры процедур?
Что представляет собой вызов процедуры (метода объекта)?
   
+
-
edit
 

zespri

новичок
>>Хотя бы азы.

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

- Указатель на текущую инструкцию (ip)
- Стек
- Массив локальных переменных
- Массив аргументов
- Метаданные
- Локальная память
- Дескриптор состояния возвращения
- Секьрити дескриптор

ip не адресуем и стек не адресуем. массив локальных переменных это то что определяется при компиляции метода, в нём присутствуют все локальные переменнве которые используются в методе. Кстати на этапе компиляции определяется максимальная глубина стека. Если она будет привышена во время исполнения, то будет возвращена ошибка. Массив аргуметов выглядит точно так же как и массив переменных но содержит аргументы метода. Каждый слот в обоих массивах содержит одно значение независимо от типа. есть специальные инструкции для чтения - записи в эти массивы. Что такое метаданные я написал выше, во времяи сполнения они разумется read-only. Локальная память это память которую может выделить метод и которая будет освобождна по окончании выполнения метода. Эта память адресуема. Не существует инструкций для освобождения этой памяти, она освобождается когда заканчивается метод. С# в режиме по умолчанию этой памятью не пользуется вообще. Псоледние две вещи не заслуживают упоминания на данной стадии, одна предназанчена для восстановления состояния виртуальной машины после возвращаения из метода и вторая связяана с встроенное в VM секьюрити.

Стек у каждого метода свой собственный и в начале выполнения метода он пуст. Для вызова метода в стек кладутся параметры (и, может быть, this) и вызывается инструкция вызова. Параметром этой инструкции является токен метаданных который определяет какой именно метод надо вызывать. при выполнении этой инструкции VM создаёт новую среду для метода, копирует параметры со стека в массив аргументов и при необходимости инициализирует локальные переменные (есть бит отвечающий за необходимость такой инициализации). Вот собственно и всё. При возвращении результат будет положен на стек выхывающего метода.
   
+
-
edit
 
популярность форта неплохо сдерживают - отсутствие более менее похожего на IDE, отсутствие заточенных под конечного юзера библиотек, отсутствие документации..
 

zespri

новичок
Jelsay>популярность форта неплохо сдерживают - отсутствие более менее похожего на IDE, отсутствие заточенных под конечного юзера библиотек, отсутствие документации..[»]

Тут не совсем понятно где курица, где яица. Я уверен, что если бы форт был популярен, то всё это мнгновенно бы появилось. Кстати сказать, документаций по форту, вообще говоря полно. IDE скажем у gcc тоже нет, в тоже время популярность gcc по сравнению с фортом просто небо и земля.
   
+
-
edit
 

"..Тут не совсем понятно где курица, где яица. Я уверен, что если бы форт был популярен, то всё это мнгновенно бы появилось. Кстати сказать, документаций по форту, вообще говоря полно. IDE скажем у gcc тоже нет, в тоже время популярность gcc по сравнению с фортом просто небо и земля.."

СРПО (IDE) нет и её простоя минимальная реализация - скажем для SPF - мне кажется способствовало бы популяризации самого SPF и Форта вообще.
Была же классная идея с редактором FE (еще тем что под ДОС) - что сейчас мешает наростить над SPF4хх аналогичный "примитив" из editor+run+error ?

Вместо документации - исходники - зачем пользователю, не писателю собственных фортов, исходники? Ему нужно нормальное описание пакета - особенно библиотек. И где если не секрет лежит это "полно" документации? на форт.орг.ру? Более менее ориентированные на юзеров были Ларионовские отечественные GP-FORH и SMAL32, но они тихонько сдохли т.к. были не под WIN.

Я понимаю что многие возразят - "Форт слишком широк, что бы его загонять в рамки" (типа ..Аллах слишком велик что-бы говорить - "НЕТ".. :-)), но надо быть реалистами - огромный потенциал Форта как языка адаптируемого пользователем просто не используется этим самым пользователем по причине слишкой низкоуровнвости начальной адаптации. Для популяризации нужен более высокий стартовый уровень - или хотя бы логически взаимосвязанные стройные и "стандартные" решения его достижения.

Изучать программирование вообще и как работают всякого рода трансляторы - тут у Форта соперников нет - в электронике тоже он не плох особенно при оладке всякой "цифровухи" - хотя уже и тут обычно начинаются проблеммы с редактированием в строчным интерпретатором, а пакетный цикл edit+save+forth+error+edit.. задолбывает

с уважением, Jelsay
 
+
-
edit
 

Balancer

администратор
★★★★★
На счёт документации - SP-Forth по исходникам документирован просто дальше некуда. У меня, сколько им пользуюсь, вопросов по ANS-форту ни разу не возникало:
code forth
  1. USER-CREATE S-O 16 CELLS TC-USER-ALLOT \ порядок поиска
  2. USER-VALUE CONTEXT    \ CONTEXT @ дает wid1
  3.  
  4. : FIND1 ( c-addr -- c-addr 0 | xt 1 | xt -1 ) \ 94 SEARCH
  5. \ Расширить семантику CORE FIND следующим:
  6. \ Искать определение с именем, заданным строкой со счетчиком c-addr.
  7. \ Если определение не найдено после просмотра всех списков в порядке поиска,
  8. \ возвратить c-addr и ноль. Если определение найдено, возвратить xt.
  9. \ Если определение немедленного исполнения, вернуть также единицу (1);
  10. \ иначе также вернуть минус единицу (-1). Для данной строки, значения,
  11. \ возвращаемые FIND во время компиляции, могут отличаться от значений,
  12. \ возвращаемых не в режиме компиляции.
  13.   0
  14.   S-O 1- CONTEXT
  15.   DO
  16.    OVER COUNT I @ SEARCH-WORDLIST
  17.    DUP IF 2SWAP 2DROP LEAVE THEN DROP
  18.    I S-O = IF LEAVE THEN
  19.    1 CELLS NEGATE
  20.   +LOOP
  21. ;
  22.  
  23. : SFIND ( addr u -- addr u 0 | xt 1 | xt -1 ) \ 94 SEARCH
  24. \ Расширить семантику CORE FIND следующим:
  25. \ Искать определение с именем, заданным строкой addr u.
  26. \ Если определение не найдено после просмотра всех списков в порядке поиска,
  27. \ возвратить addr u и ноль. Если определение найдено, возвратить xt.
  28. \ Если определение немедленного исполнения, вернуть также единицу (1);
  29. \ иначе также вернуть минус единицу (-1). Для данной строки, значения,
  30. \ возвращаемые FIND во время компиляции, могут отличаться от значений,
  31. \ возвращаемых не в режиме компиляции.
  32.   S-O 1- CONTEXT
  33.   DO
  34.    2DUP I @ SEARCH-WORDLIST
  35.     DUP IF 2SWAP 2DROP UNLOOP EXIT THEN DROP
  36.    I S-O = IF LEAVE THEN
  37.    1 CELLS NEGATE
  38.   +LOOP
  39.   0
  40. ;


И всё в таком духе. Т.е. по каждому слову подробное описание, со всеми состояниями стека, на русском, и тут же видно как оно устроено. Чего же больше желать? :)

Кстати, под SP-forth есть "нормальная" документация в CHM. Но у меня под рукой нет за ненадобностью.

IDE же - да, не хватает... Но лично мне она не нужна, а популяризация Форта для меня не настолько актуальна, чтобы я взялся за её написание, отставив на это время в сторонку десятки более актуальных задач :)
   

Dmivs

новичок
Добрая ночь!

Многообразна эта многолетняя ветка форума, от железа до Forth.NET :)
Думаю, мой вопрос также не будет оффтопиком.
Я адаптировал и расширил для достаточно нестандартного встроенного управляющего компьютера e-Forth.
Как база для освоения незнакомого железа он показал себя великолепно. Хотелось-бы продолжать использовать его, так-как требуется именно быстрая адаптация custom-приложений к разного рода быстро меняющимся CPLD и FPGA. Да и полный контроль над системой дает приятное чувство независимости от Добрых Американских Дядь ;)
Однако, действительно, классический цикл тесты в командной строке-набор текста-компиляции экранов/файлов через некоторое время становится тормозом.
А что думают уважаемые собеседники про идеологию holon? Например, замена слов во время исполнения приложения или просмотр переменных/памяти real-time? Применял ли кто-то подобные технологии на практике, пусть с другими языками/системами?
Спустимся с высот программирования под Windows в Python / Haskell / C# на грешное (читай "глючное") железо :)
   
IN hannawilliam #03.10.2024 11:52
+
-
edit
 

hannawilliam

новичок
Forth is indeed an intriguing new generation programming language that emphasizes simplicity and efficiency, making it a favorite among certain tech communities. If you’re exploring concepts like Forth and find yourself needing assistance with related assignments, consider reaching out for assignment writing help in Dubai. They offer expert support to help you tackle complex topics and improve your understanding. It’s a great resource to enhance your learning experience!"
   129.0.0.0129.0.0.0
1 2 3 4

в начало страницы | новое
 
Поиск
Настройки






Твиттер сайта
Статистика
Рейтинг@Mail.ru
АвиаТОП
 
Яндекс.Метрика
website counter
 
free counters