С чего начать портирование? - PullRequest
24 голосов
/ 08 июля 2010

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

Я в основном ищу преимущества / недостатки конкретных Forths по сравнению друг с другом.Я прочитал источник JonesFORTH , а также похвалу и критику его, а также дискуссии по ANS, и, к сожалению, я чувствую себя довольно смущенным.Сообщество Forth, насколько я могу судить, похоже, довольно жестоко разделено по вопросу соответствия стандартам, и оба лагеря дали очень хорошие аргументы в пользу того, почему стандарт является и хорошим, и ужасным.Однако я не могу найти хорошего практического совета о том, что именно изменится стандарт, кроме общего ощущения, что это делает вещи более сложными и распухшими, чем они, возможно, должны быть.

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

Ответы [ 7 ]

7 голосов
/ 15 июля 2010

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

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

Во-вторых, из всех реализаций, которые я пробовал, мне больше нравятся Gforth и Pforth.

Какие из них вы используете?

Наконец, вот список онлайн-чтения, которое я обнаружил:

Начиная с С думая далее Forth Primer Forth Language Forth Tutorials Pforth Tutorial Gforth Manual Begin Forth WikiForth OLPCForth Позволяет собрать компилятор

Нашли ли вы другие?

4 голосов
/ 21 июля 2010

Базовая система Forth очень мала и может быть быстро внедрена. Я думаю, что следующая страница будет очень полезна для вас: " Иногда минимальный компилятор Forth и учебник для систем Linux / i386 ". Это линейное руководство по начальной загрузке системы Forth!

Обязательно реализуйте определяющие слова (слова, исполняемые во время компиляции). Вот откуда приходит сила Форта; делая его действительно расширяемым.

Я на самом деле не пробовал, но однажды остановился на bigFORTH , так как это одна из немногих Фортов с лицензией на открытый код. Это также активно поддерживается; например, в начале этого года был релиз.

За последние несколько лет я собрал набор аннотированных ссылок о Форт . Некоторые вещи трудно найти.

Относительно разговора о стандартах: это 20-летняя дискуссия. Я думаю, что более важно на самом деле сделать что-то, а не говорить: внедрить программное обеспечение, предоставить убийственные примеры, написать документацию, пригласить других к участию и т. Д. С тех пор Чарльз Мур продвинулся и сделал Форт фишек , machineForth и ColorFORTH . Если вы ищете «machineForth» и «ColorFORTH» в аннотированном списке ссылок, можно найти несколько интересных статей и утверждений. У Чарльза Мура также есть блог сейчас.

2 голосов
/ 29 июля 2010

В качестве первого шага вы можете попробовать написать интерпретатор Forth на языке высокого уровня, таком как Java, C ++, Python и т. Д. У него не будет основных преимуществ Forth на уровне машины: скорость и компактность. Но, написав собственную виртуальную машину, вы получите представление о различных типах потоков и т. д., используемых в различных вариантах Forth.

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

Если, однако, вам действительно очень комфортно работать с машинным кодом, вы, вероятно, можете пропустить вышеуказанный шаг и просто перенести один из стандартов напрямую.

Что касается стандартов, я бы выбрал какой-то стандарт, но для начала оставался минимальным. Если вам нужно выйти за рамки стандарта с точки зрения вещей, отличных от пользовательских слов, вы всегда можете достичь этого - либо стандартного, либо нестандартного - в зависимости от потребностей реализации. Одна из самых крутых вещей в Forth - это то, что это так просто, что вы можете переписать весь компилятор проще, чем переписать часть кода Forth, который вы будете на нем запускать, смеется.

2 голосов
/ 22 июля 2010

Я рекомендую охотиться на eForth, который написал Тинг. В некотором роде современный вид. У него есть ядро, написанное на C, но ядра / системы eForth уже портированы на многие платформы / процессоры, большинство из которых имеют ядра / ядра сборок. Тем не менее, есть этот классный любезный фактор под названием Фактор. Он начинался как «только для игр» и оказался в диком и забавном уголке мира языков программирования

1 голос
/ 10 февраля 2015

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

Семейство непрямых нитей Форта, называемое FIG-Forth, все еще является учебным материалом. Джонсфорт является примером Форта, которые продолжаются в том же духе. Я сам являюсь автором ciforth, который был одним из вдохновителей jonesforth и yourforth, который, вероятно, стоит вашего времени, потому что он пытается объяснить причины создания вещей такими, какие они есть. Ting's eforth (повсеместно) и Camelforth также являются хорошими примерами. gforth с его обходом через c и его объем менее ценен для вас.

Один общий совет: если вам нужно кодовое слово (закодированное на ассемблере, а не Forth, самый низкий уровень), вам лучше его украсть, а затем переопределить. Код для, скажем, 32-битного 16-битного разделения на все, кроме самых непонятных процессоров, обязательно будет где-то найден. Итак, соберите несколько Фортов, которые реализованы на процессоре, который вы используете.

Вы должны выбрать процессор, и он в значительной степени заблокирует вас. Тогда вы можете просто использовать один из Camelforth (потому что он там для большинства популярных процессоров) и начать с вашего приложения. Если вы не совсем счастливы, вы можете изменить его, чтобы стать вашим собственным Forth. Если вы используете 6809, процессор Renesas или 16-битную версию i86, вы можете использовать мой ciforth в качестве отправной точки.

1 голос
/ 19 октября 2013

Gameduino , платформа для разработки игр поверх Arduino, имеет минимальный четвертый процессор (J1 вперед), работающий внутри.

В дополнение к исходному коду Verilog J1 далее , есть также компьютерный симулятор, компилятор, написанный на google go, здесь Серж Зайцев.

J1 уже реализован в Xilinx FPGA. Также возможно «моделировать» процессор J1 на любом современном MCU.

0 голосов
/ 18 января 2019

Я знаю, что это старый вопрос, но, для протокола, еще один великий шаг, с которого стоит начать, это "ff" (Феликс вперед).

Существует версия сборки, написанная на x86 (NASM) и ARM (gas) здесь .

А более поздние версии, написанные на ассемблере, созданы самим создателем собственная страница .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...