Языки программирования реализованы на ассемблере - PullRequest
8 голосов
/ 17 марта 2011

Недавно я наткнулся на JONESFORTH , который является интерпретатором для языка программирования Forth, реализованного на простом ассемблере.

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

Поэтому я задался вопросом, существуют ли какие-либо другие языки программирования, реализованные на ассемблере, чьи источники все еще доступны (и, возможно,даже еще находятся в стадии активной разработки)?

Ответы [ 5 ]

7 голосов
/ 18 марта 2011

Несколько версий Turbo Pascal начиная с 1.0 были написаны на ассемблере . Это был единственный способ встроить редактор, компилятор, отладчик и скомпилированную программу в 64 КБ ОЗУ того времени, и он обеспечил невероятную скорость редактирования-компиляции-отладки, которой раньше не было.

7 голосов
/ 17 марта 2011

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

Тем не менее, некоторые языки значительно легче создавать реализации для:

  • Очень просто создать реализацию сборки для Brainfuck

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

  • Многие интерпретаторы BASIC были написаны на ассемблере - на самом деле это, вероятно, было такдля большинства реализаций BASIC в различных домашних компьютерах конца 70-х - начала 80-х годов.Некоторые из них можно найти здесь .

6 голосов
/ 19 февраля 2012

Pico Lisp недавно (в последние несколько лет) перешел с C на ассемблер x86-64. Это единственный пример, который я могу вспомнить в «современной» эпохе. Есть некоторые старые Lisps, загруженные из ассемблера, все еще используемые. На самом деле, подождите, кто-то недавно написал Scheme на ARM-ассемблере (http://armpit.sourceforge.net/index.html). Я не знаю, почему они сделали бы такую ​​сумасшедшую вещь, и я не очень внимательно к этому относился. Конечно, очень часто пишут на C и добавьте некоторые функции asm для реализации call / cc и т. п.

Компилятор BDS C 1980-х годов был написан на ассемблере 8080, а исходный код был выпущен несколько лет назад, но в основном он представляет исторический интерес.

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

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

Таким образом, критерий может заключаться в том, является ли язык основной программыассемблер или сам язык.Более важным может быть вопрос о том, нужен ли языку для сборки другой язык, например, реализация lisp в Pascal, реализация Gforth с использованием C. Может оказаться обязательным зависеть от компилятора, который вы не контролируете, и языковых стандартов, которые могут сделатьнекоторые практики устарели.Чтобы быть в курсе новых возможностей процессора в компиляторе, требуется глубокое знание сборки, независимо от того, написан ли ваш компилятор сам по себе или в сборке.

Пока у вас есть исходный код, язык не мертв.Итак, вы можете взглянуть на FIG-Forth's (1980).Jonesforth частично вдохновлен моим ciforth, ассемблером i86 Forth для 16/32/64 бит.

Я могу особенно рекомендовать `yourforth '' Forth на ассемблере, который я сделал специально для образовательных целей.У него есть упражнения, но они еще не выполнены: https://bitbucket.org/avanderhorst/yourforth

2 голосов
/ 26 марта 2011

Хотя не просто в сборке, vm и некоторые другие разделы luajit написаны в макро-сборке, для нескольких платформ (в основном x86), исключительно из-за скорости, которую это обеспечивает (Майк Пол может иметь другие причины, но я верюэто основной).Макропроцессор также построен на заказ, однако, с использованием lua.

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