Задать вопрос
Ответы пользователя по тегу Forth
  • Как запустить Linux на Forth-процессоре?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    А никак. Вообще, у форт-процессоров уже есть ОС: это Форт. Он для этого и предназначен - это прежде всего связка из двух составляющих, софта и железа. Чисто теоретически возможно, конечно, написать эмулятор х86 для этого проца, но это будет пустой тратой ресурсов и времени. В данном вопросе речь идет о процессоре Green Array F18A. Этот процессор предназначен прежде всего для цифровой обработки сигналов (DSP), встраиваемых систем, интернета вещей, и других применений, где важна прежде всего энергоэффективность и возможность проводить вычисления в кучу потоков. Так что правильно заметили - это именно числодробилка. У него крайне простая архитектура:
    • RAM/ROM - 64 слова по 18 бит
    • Пара кольцевых буферов - стек данных на 8+2 регистров и возврата на 8 регистров
    • Регистр индекса для циклов
    • Регистр общего назначения
    • Регистр для записи для работы с IO
    • IO порт 4 + 3 + 2 + 1 опциональный
    • ALU - математика и логика

    И в общем-то всё. Тут только числа и считать. Возможно одно или даже два х86 ядра тут можно сэмулировать, чисто теоретически, но вот работать оно будет очень не быстро.
    Ответ написан
    Комментировать
  • Forth-процессоры программируются на Форт?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Некропостниг, конечно, но просто оставлю тут объяснение почему именно.
    Да, для форт-процессора Форт является ассемблером. Потому что базовая часть слов реализована самим процессором на железном уровне, а так же все слова компилируются в машинные коды, а не в другой ассемблер.
    И при этом одновременно Форт является языком высокого уровня. Потому что код может быть перенесён на другую платформу и выполнен там. Да, вот тут есть проблема - разные стандарты, из-за чего и возникает несовместимость разных Фортов. А куча стандартов потому что Форт как ЯП слишком гибкий и позволяет делать вообще всё. Все же слышали про волны гонения в JavaScript из-за того, что позволяет слишком много? Так вот в мире Форта - это все можно возводить в куб. Там не то, что в ногу можно выстрелить, там можно сделать неосторожный шаг в строну и аннгилировать вообще все. Говорят, программа на ошибками Форте просто не запустится. Форт, это не столько ЯП, сколько система, связка из "проблема + DSL на Форте + процессор + библиотеки". Поэтому форт программисты обычно и говорят "Форт-система".
    Ответ написан
    Комментировать
  • Как подключить еще несколько words к GForth?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Скорее всего надо просто заинклюдить файл с определениями либо подключить словарь с этим словами, если они в отдельном словаре.
    Ответ написан
    4 комментария
  • Как реализовать условные конструкции в языке Форт?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как мне реализовать оператор ветвления так, чтобы он поддерживал вложенность.

    Стеком, конечно. Для этого, обычно, используется т.н. стек управления или управляющих структур. Он существует только во время компиляции. Точный механизм не помню, но то ли кладем в этот стек код операции то ли адрес точки ветвления для вычисления смещения ветвления то ли все вместе.
    И ещё, не подскажите ли, как разбить код на функции? А то функция eval-forth-program слишком большая и сложная.

    Традиционно форт реализуется с использованием т.н. шитого кода. Так же есть и вариации шитого кода и другие механизмы. В целом логика такая: есть список - это словарь слов. Логика интерпретатора крайне проста:
    1. Получить следующий символ из входного потока
    2. Если ноль или конец строки - выход
    3. Если не разделитель - перейти к следующему символу
    4. Если разделитель - искать слово в словаре
    5. Если слово найдено - выполнить его
    6. Не найдено - сообщить об ошибке

    Далее, организовываем два стека - основной, возврата, переменную STATE (интепретация/компиляция), основной словарь или список словарей, минимальный набор слов для компиляции - двоеточие, точка с запятой и далее по мере надобности все остальное. Главное запустить интерпретатор, от него компилятор, а далее уже можно средствами самого форта реализовать остальной минимальный набор слов, затем учим форт компилировать и собирать самого себя и получаем самодостаточную систему. Рекомендую книги Лео Броуди к прочтению и регистрацию на форт-форуме - там тоже очень много материалов по теме реализации форта )
    Ответ написан
    1 комментарий