Подтвердить что ты не робот

С чего начать, чтобы начать портирование?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Начиная с четвертого Думая дальше Forth Primer Четвертый язык Форт Учебники Pforth Tutorial Руководство Gforth Начинай дальше WikiForth OLPC Forth Давайте построим компилятор

Вы нашли другие?

Ответ 2

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

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

Я на самом деле не пробовал, но однажды я решил bigFORTH, поскольку он является одним из немногих Forths с открытым исходной лицензии. Он также активно поддерживается; например, в этом году был выпущен релиз.

Я собрал набор аннотированных ссылок о Forth за последние несколько лет. Некоторые из них трудно найти.

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

Ответ 3

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

Ответ 4

Одна вещь, которую вы, возможно, захотите попробовать в качестве первого шага, - написать интерпретатор Forth на языке более высокого уровня, таком как Java, С++, Python и т.д. Ему не хватит основных преимуществ машинного уровня Forth: скорость и компактность, но, написав свою собственную виртуальную машину, вы получите представление о различных типах потоков и т.д., используемых в различных вариантах Forth.

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

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

Ответ 7

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

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

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