Как Forth реализует словарь? (Полемика) - PullRequest
11 голосов
/ 08 сентября 2010

Я учусь Forth для личного проекта, который у меня на уме.Похоже, что это действительно крутой и простой язык для реализации на небольшой виртуальной машине.

Меня особенно впечатляют возможности использования на нем словарей.С другой стороны, я думаю, что работа словаря слишком сложна для языка, который в целом настолько прост.Я говорю это, потому что я прочитал некоторые статьи об этом, и я знаю, что существует много противоречий.

Есть некоторые микропроцессоры, которые реализуют некоторые функции Forth в своих инструкциях, и мне интересно знать, как они реализуютсловарь и функции, такие как словарь на них, так что я могу реализовать виртуальную машину, которая похожа на эти микропроцессоры.

То есть словарь - это не простая куча, которая растет, и не простой линейный векторкоторый мы можем просто проиндексировать, так что микрокод микропроцессора не так-то просто сделать (я полагаю).Я был бы очень впечатлен, если бы эти специальные процессоры могли реализовать словарь так, как он должен быть, без какого-либо дополнительного кода, конечно.Я думаю, что это невозможно.

Так что для моего проекта я планирую закодировать интерпретатор с помощью кучи, с кодами операций, чтобы манипулировать им, как, например, в 6852. И код для словаря,составляется вместе с переводчиком и редактором в Форт.Я думаю, что это должно быть больше похоже на реальность.

О чем весь этот спор?Как работают эти специальные процессоры в отношении словаря и использования словарей?

Ответы [ 2 ]

5 голосов
/ 08 сентября 2010

Статья в Википедии о Forth содержит краткое описание оригинальной реализации Словаря.Также см. « Развитие и распространение » в «Эволюции Форта».Исходная реализация использовала связанный список.Но хеш-таблица (карта) кажется лучшим приближением.

0 голосов
/ 24 апреля 2018

Выберите что-нибудь маленькое, что работает на вашей машине, и идите оттуда. Ищите ciforth (должен быть волшебник m4, хотя ...), eForth (много вариантов), ff, lbForth.

Если вы хотите пройти весь путь до железа, проверьте jonesforth (для x86_32) или jonesforth64 (для x86_64, бит i386 комментариев). Это объяснит, как / почему большая часть беспорядка висит вместе.

...