Переводчик исходного кода , компилятор исходного кода ( компилятор S2S ), транскомпилятор или транспилятор [1] [2] [3] — это тип транслятора , который принимает исходный код программы, написанной на языке программирования , в качестве входных данных и создает эквивалентный исходный код на том же или другом языке программирования. Транслятор исходного кода преобразует между языками программирования, которые работают примерно на одном уровне абстракции , в то время как традиционный компилятор преобразует с языка программирования более высокого уровня на язык программирования более низкого уровня . Например, транслятор исходного кода может выполнять перевод программы с Python на JavaScript , в то время как традиционный компилятор преобразует с языка типа C на ассемблер или Java на байт-код . [4] Автоматический распараллеливающий компилятор часто принимает программу на языке высокого уровня в качестве входных данных, а затем преобразует код и аннотирует его с помощью аннотаций параллельного кода (например, OpenMP ) или языковых конструкций (например, операторов Fortranforall
). [2] [5]
Другая цель компиляции исходного кода в исходный код — это перевод устаревшего кода для использования следующей версии базового языка программирования или API, который нарушает обратную совместимость. Он выполнит автоматический рефакторинг кода , что полезно, когда программы для рефакторинга находятся вне контроля исходного разработчика (например, преобразование программ из Python 2 в Python 3 или преобразование программ из старого API в новый API) или когда размер программы делает непрактичным или трудоемким рефакторинг вручную.
Транскомпиляторы могут либо сохранять структуру переведенного кода как можно ближе к исходному коду, чтобы облегчить разработку и отладку оригинального исходного кода, либо изменять структуру исходного кода настолько, что переведенный код не будет похож на исходный код. [6] Существуют также утилиты отладки, которые сопоставляют транскомпилированный исходный код с исходным кодом; например, стандарт JavaScript Source Map [ требуется ссылка ] позволяет сопоставлять код JavaScript, выполняемый веб-браузером, с исходным кодом, когда код JavaScript был, например, минифицирован или создан с помощью языка, транскомпилированного в JavaScript. [ требуется ссылка ]
Примерами являются Closure Compiler , CoffeeScript , Dart , Haxe , Opal, TypeScript и Emscripten . [7]
Так называемые трансляторы языка ассемблера представляют собой класс трансляторов исходного кода, преобразующих код с одного языка ассемблера на другой, в том числе (но не ограничиваясь) между различными семействами процессоров и системными платформами .
Intel продвигала свой 16-битный процессор 8086 как совместимый по исходному коду с 8080 , 8-битным процессором. [8] Для поддержки этого у Intel был транслятор на основе ISIS-II из исходного кода 8080 в 8086 под названием CONV86 [9] [10] [11] [12] (также называемый CONV-86 [13] и CONVERT 86 [14] [15] ), доступный OEM- клиентам с 1978 года, возможно, самая ранняя программа такого рода. [nb 1] Он поддерживал несколько уровней трансляции и работал на частоте 2 МГц на Intel Microprocessor Development System MDS-800 с 8-дюймовыми дисководами . Согласно сообщениям пользователей, он работал не очень надежно. [16] [17]
Seattle Computer Products (SCP) предложила TRANS86.COM, [15] [18] [19], написанный Тимом Патерсоном в 1980 году во время разработки 86-DOS . [20] [21] [22] Утилита могла транслировать исходный код ассемблера Intel 8080 и Zilog Z80 (с мнемоникой Zilog/ Mostek ) в исходный код .ASM для Intel 8086 (в формате, совместимом только с кросс-ассемблером SCP ASM86 для CP/M-80 ), но поддерживала только подмножество кодов операций , регистров и режимов, и часто все еще требовала значительной ручной коррекции и последующей доработки. [23] [20] Кроме того, выполняя только простую транслитерацию , [14] [18] [9] [10] однопроходный транслятор грубой силы не выполнял никаких оптимизаций регистров и переходов. [24] [25] Требовалось около 24 КБ ОЗУ. [15] SCP-версия 1 TRANS86.COM работала на системах на базе Z80. [15] [18] После запуска 86-DOS Патерсон, в подходе, вдохновленном самостоятельным размещением , использовал TRANS86 для преобразования себя в программу, работающую под 86-DOS. [22] [18] Пронумерованная версия 2, была названа TRANS.COM. [18] [25] [24] [26] [27] Позже, в 1982 году, транслятор, по-видимому, также был доступен от Microsoft . [15] [28]
Также названный TRANS86, Sorcim также предлагал транслятор 8080 в 8086 с декабря 1980 года. [29] [14] Как и программа SCP, он был разработан для переноса кода приложения CP/M-80 (в формате ассемблера ASM, MAC, RMAC или ACT80) в MS-DOS (в формате, совместимом с ACT86). [29] [15] [30] [31] В формате ACT80 он также поддерживал несколько мнемоник Z80. Трансляция происходила на основе инструкция за инструкцией с некоторой оптимизацией, примененной к условным переходам. Программа работала под CP/M-80, MP/M-80 и Cromemco DOS с минимальным объемом оперативной памяти 24 КБ и не имела ограничений на размер исходного файла. [15] [32]
Гораздо более сложной и первой, внедрившей оптимизирующие технологии компиляции в процесс трансляции исходного кода, была программа XLT86 1.0 компании Digital Research , выпущенная в сентябре 1981 года. XLT86 1.1 была доступна к апрелю 1982 года. [33] Программа была написана Гэри Килдаллом [14] [34] [35] [36] и транслировала исходный код .ASM для процессора Intel 8080 (в формате, совместимом с ассемблерами ASM, MAC или RMAC) в исходный код .A86 для 8086 (совместимый с ASM86). Используя глобальный анализ потока данных об использовании регистров 8080, [37] [14] [38] [39] пятифазный многопроходный транслятор также оптимизировал бы вывод для размера кода и заботился бы о соглашениях о вызовах ( вызовы BDOS CP/M-80 были сопоставлены с вызовами BDOS для CP/M-86 ), так что программы CP/M-80 и MP/M-80 могли бы быть автоматически портированы на платформы CP/M-86 и MP/M-86 . Сам XLT86.COM был написан на PL/I-80 для платформ CP/M-80. [40] [15] [33] [41] Программа занимала 30 КБ ОЗУ для себя плюс дополнительную память для графа программы . В системе памяти 64 КБ максимальный поддерживаемый размер исходного файла составлял около 6 КБ, [40] [15] [42] [33] поэтому большие файлы приходилось соответствующим образом разбивать перед трансляцией. [15] [33] В качестве альтернативы XLT86 также был доступен для DEC VAX/VMS . [15] [33] Хотя ввод и вывод XLT86 работали на уровне исходного кода, представление программы в памяти транслятора и применяемые технологии оптимизации кода заложили основу для двоичной перекомпиляции . [43] [44] [45]
2500 AD Software предложила транслятор исходного кода 8080 в 8086 как часть своего пакета XASM для машин CP/M-80 с Z80, а также для систем Zilog ZEUS и Olivetti PCOS . [46]
С 1979 года Zilog предлагала транслятор Z80 в Z8000 как часть своей системы разработки PDS 8000. [47] [48] [49] [50] [51] [17] Advanced Micro Computers (AMC) [51] [17] и 2500 AD Software также предлагали трансляторы Z80 в Z8000. [46] Последний назывался TRANS [52] [53] и был доступен для Z80 CP/M, CP/M-86, MS-DOS и PCOS. [46]
Комплект разработчика Z88DK предоставляет транслятор исходного кода Z80 в i486 , ориентированный на nasm, под названием "to86.awk", написанный в 2008 году Стефано Бодрато. [54] Он, в свою очередь, основан на преобразователе 8080 в Z80, написанном в 2003 году Дугласом Битти-младшим и названном "toz80.awk". [54]
В 2021 году Брайан Каллахан написал транслятор исходного кода 8080 CP/M 2.2 в MS-DOS, ориентированный на nasm, под названием 8088ify. [55]
Первые реализации некоторых языков программирования начинались как транскомпиляторы, и реализация по умолчанию для некоторых из этих языков до сих пор является транскомпиляторами. В дополнение к таблице ниже, разработчик CoffeeScript предоставляет список языков, которые компилируются в JavaScript. [56]
Когда разработчики хотят перейти на другой язык, сохранив большую часть существующей кодовой базы, может быть лучше использовать транскомпилятор, чем переписывать все программное обеспечение вручную. В зависимости от качества транскомпилятора, код может нуждаться или не нуждаться в ручном вмешательстве для правильной работы. Это отличается от «транскомпилированных языков», где спецификации требуют, чтобы выходной исходный код всегда работал без изменений. Все транскомпиляторы, используемые для переноса кодовой базы, будут ожидать ручной корректировки выходного исходного кода, если необходимо достичь максимального качества кода с точки зрения читаемости и соглашения платформы.
Конвейер транскомпилятора — это то, что получается в результате рекурсивной транскомпиляции . Объединяя несколько слоев технологий с шагом транскомпиляции между каждым слоем, технология может многократно трансформироваться, эффективно создавая распределенную спецификацию, независимую от языка .
XSLT — это универсальный инструмент преобразования, который можно использовать между многими различными технологиями для создания такого конвейера производного кода .
Рекурсивная транскомпиляция (или рекурсивный транспиляция ) — это процесс рекурсивного применения понятия транскомпиляции для создания конвейера преобразований (часто начинающихся с одного источника истины ), которые многократно превращают одну технологию в другую.
Повторяя этот процесс, можно превратить A → B → C → D → E → F, а затем обратно в A(v2). Некоторая информация будет сохранена через этот конвейер, от A → A(v2), и эта информация (на абстрактном уровне) демонстрирует, с чем соглашаются каждый из компонентов A–F.
В каждой из различных версий, которые производит конвейер транскомпилятора, эта информация сохраняется. Она может принимать множество различных форм и размеров, но к тому времени, когда она возвращается в A (v2), будучи транскомпилированной шесть раз в конвейере выше, информация возвращается в свое исходное состояние.
Эта информация, которая сохраняется после преобразования в каждом формате от A–F–A(v2), является (по определению) производным содержимым или производным кодом .
Рекурсивная транскомпиляция использует тот факт, что транскомпиляторы могут либо сохранять транслируемый код как можно ближе к исходному коду, чтобы облегчить разработку и отладку оригинального исходного кода, либо они могут изменить структуру исходного кода настолько, что транслируемый код не будет похож на исходный код. Существуют также утилиты отладки, которые сопоставляют транскомпилированный исходный код с исходным кодом; например, исходные карты JavaScript позволяют сопоставлять код JavaScript, выполняемый веб-браузером , с исходным кодом на языке, транскомпилированном в JavaScript.
[…] Achtung C - und Basic -Programmierer! […] Jetzt gibt es den B→C TRANSPILER das einzigartige Umwandlungs-Software-System от ARC […] Der B→C TRANSPILER übersetzt lauffähige AMIGA -Basicprogramme в компиляторе C-Code. […] Durch Spezialbefehle cann C-Code в базовой программе сразу интегрируется. […] Basic-Befehle werden erweitert transpiliert. ( HAM-Modus , IFF , usw. werden unterstützt). […] Mit diesem Konzept neuester Generation verbindet der B→C TRANSPILER auf einzigartige Weise die Vorteile eines Interpreters mit denen eines Compilers […][1]
[…] Название транспилятор подразумевает сочетание транспьютера и компилятора , точно так же, как транспьютер был образован от транзистора и компьютера (т. е. компьютера, который также является компонентом). […](Примечание. Термин «транспилятор Оккама» используется как синоним компилятора исходного кода, работающего в качестве препроцессора , который принимает обычную программу Оккама в качестве входных данных и выводит новый исходный код Оккама в качестве выходных данных с назначениями ссылок на каналы и т. д., тем самым настраивая его для параллельной обработки с целью максимально эффективной работы в сети транспьютеров .)
[…] Приоритет заявлен в соответствии с Разделом 44(D) по заявке Соединенного Королевства № 1495953, поданной 1992-03-31 Reg. No. A1495953, датированной 1992-03-31, истекает 1999-03-31. Для компьютерного программного обеспечения и программ (US Cl. 38). Первое использование 1 августа 1991 г., в торговле 1 августа 1991 г.(Примечание. Эта компания разрабатывает такие продукты, как VX/BASIC, транспилятор BASIC-to-C для DEC VMS . Несмотря на их заявление, это не первое публичное использование термина транспилятор, см., например, транспилятор BASIC-to-C компании ARC для Amiga в 1988 году и транспилятор Occam компании Concurrent Technology Systems (CTS) в 1989 году.)
[…] 8086 программно совместим с 8080 на уровне языка ассемблера. […]
[…] Программа-транслятор Intel могла преобразовывать программы на ассемблере 8080 в программы на ассемблере 8086 […]
[…] другие программы дополняют инструменты разработки программного обеспечения, доступные для
8086
и
8088.
[…] CONV-86 может выполнять большую часть работы по преобразованию, необходимой для перевода исходных модулей языка ассемблера
8080/8085
в исходные модули ASM-86. […] Для упрощения преобразования программ языка ассемблера 8080A /
8085A
для запуска на плате iSBC 86/12A CONV-86 доступен под управлением операционной системы
ISIS-II
.[5] [6]
[…] «Если у вас нет схемы перевода, которая учитывает особые особенности целевого микропроцессора, автоматический переводчик не сможет работать», – объясняет Дэниел Дэвис, программист из
Digital Research
. «Вы получите прямую
транслитерацию
». […] Несмотря на все эти ограничения, в последнее время в разработке переводчиков был достигнут прогресс. В частности, Digital Research представила свой восьми- и 16-битный транслятор ассемблерного кода. На основе исследования, проведенного президентом Digital Research
Гэри Килдаллом
, XLT86, по-видимому, предлагает преимущества по сравнению с ранее доступной технологией программного транслятора. Подобно
Trans от
Sorcim и Convert 86 от
Intel
, пакет Килдалла транслирует код на языке ассемблера с микропроцессора
8080
на
8086.
Однако Килдалл применил
глобальную технику анализа потока
, которая учитывает некоторые из основных недостатков других трансляторов. Процедура анализирует использование регистров и флагов в разделах кода 8080, чтобы исключить несущественный код. По словам программиста Digital Research Дэвиса, алгоритм, используемый Килдаллом, позволяет переводчику учитывать контекст при переводе программы. До сих пор одной из основных проблем любой программы-транслятора была неспособность программного обеспечения делать что-то большее, чем транслитерация. Если новый транслятор Digital Research действительно улучшит технологию до такой степени, что контекст можно будет учитывать, то на рынке микрокомпьютеров может появиться больше программных трансляторов.
[…]
XLT86 от
Digital Research берет стандартный исходный код
8080
в формате, совместимом с ассемблерами ASM, MAC или RMAC, и преобразует исходный код 8080 в исходный код
8086
в формате, совместимом с ASM86, работающим под управлением
CP/M-80
или
CP/M-86
. Поскольку XLT86 написан на
PL/I-80
, транслятор может работать как автономно под управлением CP/M-80, так и для
кросс-разработки
под управлением VAX/VMS. Он создает оптимизированный код 8086 в пятифазном
многопроходном
процессе, выполняя
глобальный анализ потока данных
для определения оптимального использования регистров. Хотя определения макросов не поддерживаются, директивы условной сборки […] если вам нужно расширение макроса, вы можете использовать проход через MAC или RMAC для создания файла PRN, который можно редактировать […] для создания расширенного исходного файла для ввода, приемлемого для XLT86. XLT86 не распознает инструкции
Z80
. XLT86 передает циклы повторов в исходный код 8086. XLT86 анализирует исходную программу целиком, определяя
структуру блока
и использование регистров/флагов. Работая с этой информацией, он транслирует код в код ассемблера 8086 оптимизированным способом. Алгоритм принятия решения для каждого типа инструкции приведен в […] руководстве […] Отображение регистров обычно следует […] со слабой связью между 8086
AX
и 8080
PSW
; точная связь определяется использованием регистров во
время трансляции
. Для управления процессом трансляции доступно множество параметров
среды выполнения
, как в командной строке, так и встроенных в исходный текст 8080. […] XLT86 — сложная программа, которая выполняет разумную работу по оптимизации трансляции исходного кода 8080 в исходный код 8086.
BDOS
Вызовы из CP/M-80 отображаются в вызовы BDOS, совместимые с CP/M-86. XLT86 имеет специальные функции для обработки трансляции условных инструкций JMP и CALL в исходном коде 8080. В инструкциях 8080 инструкции JMP и CALL способны достигать любого адреса в пределах 64-килобайтной области. Условные инструкции JMP 8086 могут достигать только 128 байт с каждой стороны регистра IP […]. XLT86 проверяет цель условного JMP. Если цель не может быть достигнута, XLT86 изменяет смысл условного JMP и пропускает длинный JMP к целевому адресу. Поскольку в 8086 нет условных инструкций CALL или RET, смысл условия изменяется, и выполняется короткий условный JMP для пропуска безусловного CALL или RET. […] сегментные регистры позволяют разделять области кода и данных. […] XLT86 проверяет выражение и определяет нужный сегмент для конкретной инструкции. […][7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] (13 страниц)
[…] Оригинальный ассемблер
8086
работал на системе разработки MDS-80, оснащенной
8080.
Одним из первых продуктов был транслятор исходного уровня 8080 в 8086. Я помню, что скорость перевода была феноменально медленной. […] наш продавец предложил провести тест преобразования и проверки в местном офисе продаж […] Мы […] начали работу на серии
ISIS-II
MDS 200 там — у них даже был жесткий диск, что было возмутительно дорогим вариантом для MDS […] все еще хрустела, когда мы уходили на ночь. На следующее утро он все еще не был готов […] Примерно через 2 недели, после того как программисты
Intel
посмотрели на транслятор, Эд вернулся с переведенной программой. Она была примерно на 50% больше по размеру, чем оригинальная версия
8085
, что как бы противоречило заявлениям Intel о трансляторе. […]
[…] У
Intel
был транслятор с
8080
в
8086
, размещенный на ISIS . Я помню, как провел очень разочаровывающий день в местном офисе продаж Intel с образцом кода 8080 — базовым пакетом
BCD
с плавающей точкой для 8080 и часами ждал, пока транслятор закончит свою работу — и вернулся домой разочарованным. Примерно через неделю мне позвонили и сказали, что они наконец-то разобрались с ошибками, и я могу забрать свою переведенную программу. Указанная программа была более чем в полтора раза больше оригинала с точки зрения байтов объектов. Я тогда немного скептически отнесся к заявлению Intel, что код 8086 был гораздо компактнее, чем его аналог 8080. И эта чертова штука все равно не работала, когда ее подвергли тестированию. […] Были и другие трансляторы 80-в-86 для
CP/M
. Я припоминаю, что
у Sorcim
был один. У
AMC
также был транслятор
Z80
-в-
Z8000
. […] Транслятор [Intel] имел несколько уровней трансляции […] был «буквальный», сохраняющий подробную работу […] это был
ISIS-II
, работающий на MDS-800, на частоте, сколько там, 2 МГц с 8-дюймовыми дискетами. […]
[…]
Тим Патерсон
[…] сказал следующее о своем
ассемблере
8086 , который он написал, работая в
SCP
: «Ассемблер 8086, который я написал изначально, был на языке ассемблера
Z80
и работал под управлением
CP/M
. Я полагаю, что он распространялся с процессорной картой SCP 8086 как ASM86. Я также написал транслятор, который преобразовывал исходный код Z80 в неэффективный, но работоспособный исходный код 8086 (
Intel
продвигала эту идею с помощью опубликованной таблицы трансляции). Он назывался TRANS86 и также был написан на ассемблере Z80 для CP/M. Как только
DOS
заработал, я применил транслятор к ASM86 (и к нему самому), чтобы создать версии 8086, которые работали под управлением DOS. У меня нет истории изменений перед глазами […], но я полагаю, что версии >= 2 обозначали переведенную (DOS) версию. Если в какой-либо истории указаны номера версий < 2, то это была версия CP/M». […]
…] Критерии проектирования
MS-DOS
[…] Основным требованием к проектированию MS-DOS была
совместимость с трансляцией
CP/M-80
, то есть если программа
8080
или
Z80
для CP/M была транслирована для
8086
в соответствии с опубликованными правилами
Intel
, эта программа будет правильно выполняться в MS-DOS. Создание требования совместимости с трансляцией CP/M-80 способствовало быстрой разработке программного обеспечения 8086, в чем, естественно,
Seattle Computer
был заинтересован. Частичный успех был достигнут: те разработчики программного обеспечения, которые решили перевести свои программы CP/M-80, обнаружили, что они действительно работают под MS-DOS, часто с первой попытки. К сожалению, многие разработчики программного обеспечения, с которыми Seattle Computer общались в ранние дни, предпочитали просто игнорировать MS-DOS. До тех пор, пока не был анонсирован
IBM Personal Computer
, эти разработчики считали, что
CP/M-86
станет операционной системой компьютеров 8086/8088. […]
[21] [22]
…] 1. Считать
файл исходного кода
Z80
, записанный в формате
CP/M, и преобразовать в формат
86-DOS
. 2. Программа-транслятор транслирует исходный код Z80 в исходный код
8086.
3. Резидентный ассемблер компилирует транслированный исходный код 8086 в
объектный код
8086. 4. Незначительная ручная коррекция и оптимизация. (На исправление недавнего перевода программы 19K Z80 у нас ушло около четырех часов. Даже без оптимизации она работала в два раза быстрее оригинала! […])[23]
[…] Чтобы заставить крупных разработчиков программного обеспечения портировать свои продукты с
8080
/
Z80
на
8086
, я решил, что мы должны сделать это как можно проще. Я уже написал транслятор исходного кода с Z80 на 8086 (размещенный на 8080 и
CP/M
). Мой план состоял в том, что запуск программы 8080 CP/M через транслятор будет единственной работой, которую потребуют разработчики программного обеспечения для переноса программы на 8086. Другими словами, интерфейс, используемый приложениями для запроса служб операционной системы, будет точно таким же, как у CP/M после применения правил трансляции. […]
[…]
Совместимость с переводом
CP/M […] Для успеха
DOS
для нее необходимо было бы написать полезные приложения (например, текстовый процессор). Я беспокоился, что у
SCP
могут возникнуть проблемы с убеждением авторов прикладного программного обеспечения приложить усилия для создания версии своих программ для DOS. Мало кто купил 16-разрядный компьютер SCP, поэтому установленная база была небольшой. Без приложений не было бы много пользователей, а без пользователей не было бы много приложений. […] Я надеялся, что, максимально упростив перенос существующих 8-разрядных приложений на наш 16-разрядный компьютер, мы привлечем больше программистов, которые рискнут этим заняться. И мне казалось, что совместимость с трансляцией CP/M — это то, что максимально упростит работу.
Intel
определила правила для трансляции 8-битных программ в 16-битные; совместимость с трансляцией CP/M означает, что когда запрос программы к CP/M проходит через трансляцию, он становится эквивалентным запросом к DOS. […] Поэтому я сделал совместимость с трансляцией CP/M фундаментальной целью проектирования. Это потребовало от меня создания очень специфичного интерфейса прикладных программ, который реализовывал совместимость с трансляцией. Я не считал это основным API — на самом деле был другой API, более подходящий для 16-битного мира и имевший больше возможностей. Оба API использовали конструкции, определенные CP/M (например, «
Блок управления файлами
»); API совместимости должен был это делать, и я не видел причин определять что-то другое для основного API. […] Я сам воспользовался совместимостью с трансляцией. Написанные мной инструменты разработки, такие как ассемблер, изначально были 8-битными программами, работавшими под CP/M (
CDOS
). Я пропустил их через транслятор и получил 16-битные программы, работавшие под DOS. Эти переведенные инструменты были включены в DOS при отправке SCP. Но я не думаю, что кто-либо еще когда-либо воспользовался этим процессом. […]
[…] Транслятор
Seattle Computer Products
Z80
в
8086
работает на Z80 под управлением
CP/M
. Он принимает в качестве входных данных исходный файл Z80, написанный с использованием мнемоники
Zilog
/
Mostek
, и преобразует его в исходный файл 8086 в формате, приемлемом для нашего кросс-ассемблера 8086. Чтобы перевести файл, просто введите TRANS86 <имя_файла>.<расширение>. Независимо от исходного расширения выходной файл будет называться <имя_файла>.A86 и появится на том же диске, что и входной файл. Файл с именем TRNTEST.Z80 включен для демонстрации транслятора. Весь язык ассемблера Z80 не переведен. […]
[24]
[…] Транслятор исходного кода может транслировать большую часть
исходного кода
Z80 в исходный код
8086
, приемлемый для ассемблера, после незначительной ручной коррекции. Это обеспечивает относительно быстрый и простой способ переноса программ между процессорами. […] Файл TRANS […] Транслятор исходного кода Z80-to-8086, вызываемый этой командой, по сути идентичен нашей версии, которая работает на Z80, которая описана в конце руководства по ассемблеру. Единственные отличия: 1. Транслятор называется TRANS, а не TRANS86, и он работает на 8086 под управлением
86-DOS
, а не на Z80 под управлением
CP/M
. 2. Расширение выходного файла — «ASM», а не «A86». […][26]
…] Впечатляющий и полезный набор утилит для разработки программного обеспечения является стандартной функцией
MS-DOS
. Программа, которая транслирует
код
8080
или
Z80 в исходный код
8086
, компоновщик и библиотека времени выполнения в сочетании с мощным ассемблером предоставляют программисту все необходимое для полного использования преимуществ 16-разрядного процессора ПК. Программа трансляции MS-DOS позволяет пользователю транслировать код, разработанный под
CP/M-80
или
SB-80
[…] 8-битной операционной системой […] в
MS-DOS 1.2
или
2.0
. Для запуска программ на 16-битных системах могут потребоваться некоторые изменения, выходящие за рамки простого трансляции, поэтому я предлагаю, чтобы этот инструмент в первую очередь использовался технически подготовленным пользователем. […]
[…] На прошлой неделе прошла полугодовая
встреча по обмену компьютерами в Калифорнии
. Это мероприятие организовано Джоном Крейгом […]
Sorcim
[…] дебютировала […] на выставке […] Их другим продуктом был TRANS-86. TRANS-86 возьмет любой
файл исходного кода
CP/M-
совместимого
8080
/
8085
/
Z-80 и переведет его в код
8086.
Затем вы можете собрать новый файл с помощью ACT-86. […]
[…] ПОЧЕМУ? ГИБКОСТЬ. Процессор
CompuPro
85/88 работает с CP/M 80, 86, MP/M II и MP/M 86. Мы предлагаем WORDSTAR dBASE II SUPERCALC множество языков, трансляторы 8080 в 8088 и многое другое! СОВМЕСТИМОСТЬ. Наши системы могут использовать утилиты CP/M 2.2 для написания программ для IBM PC. Вы просто создаете исходный код 8088 (либо пишете его в своем любимом редакторе CP/M 80, либо переводите его с помощью TRANS 86 от
Sorcim
), выполняете кросс-ассемблирование исходного кода (с помощью ACT86 от Sorcim), связываете свой hex-файл (с помощью команды LOAD от CP/M 80), переводите его на IBM PC (с помощью программы CPM-IBM от G&G) и запускаете его на своем IBM PC! Эта процедура НЕ требует MS-DOS! […] ПОЧЕМУ? ГИБКОСТЬ. Процессор
CompuPro
85/88 запускает CP/M 80 и 86 или MS-DOS. Мы предлагаем WORDSTAR, dBASE II, TRANS86, XLT86, ACT86, SUPERCALC, CBASIC, MBASIC, MFORTRAN и многое другое! […][28] [29]
[…]
Sorcim
только что завершила покупку
ISA
. […] У них также есть транслятор 8080-в-8086 – Trans-86 – работающий уже больше года […]
[…] XLT-86 1.1 […] XLT-86 — это аналитическая программа-транслятор, написанная на
PL/I-80
. Она считывает всю исходную программу 8080, собирает ее в машинный код, анализирует использование регистров, памяти и флагов и выдает оптимизированную
программу на языке ассемблера
8086
. […] Также существует версия XLT-86 для тех из вас, у кого есть доступ к
VAX 11/750
или
11/780
. Эта версия может переводить гораздо более объемные программы. Она также стоит 8000 долларов. […] В то время как транслятор добавляет некоторые метки и приравнивает их к исходной программе в рамках перевода, все оригинальные комментарии и метки программы передаются в нетронутом виде в переведенную программу. […] Трансляция программы выполняется в пять этапов. Во-первых, программа сканируется и собирается для получения значений и местоположений символов. Во-вторых, структура программы анализируется и разлагается на
базовые блоки
. В-третьих, базовые блоки анализируются для определения
потока программы
и использования ресурсов. В-четвертых, данные
о структуре блока
и
распределении регистров
собираются в листинг для пользователя. В-пятых, информация о потоке и исходная программа используются для создания исходной программы
8086.
[…]
[…] Килдалл: […] Полтора года назад я, вероятно, тратил 75% своего времени на бизнес и 25% на программирование. XLT-86 был продуктом, над которым я работал в то время, и мне потребовалось девять месяцев, чтобы сделать его. Если бы я мог сосредоточиться на этом проекте, он занял бы три месяца. […]
…] ПК: Каковы некоторые сложности, связанные с переводом программы из
формы 8080
в
форму
8086 ?
Килдалл
: Прямые переводы на уровне исходной программы можно выполнять практически механически. Например, инструкция 8080 «Добавить немедленно 5» превращается в «Добавить AL 5» на 8086 — очень простая трансляция самих кодов операций. Сложность
механической трансляции
возникает из-за таких ситуаций: инструкция 8080 DAD H берет регистр HL и добавляет к нему DE. Для 8086 эквивалентной инструкцией будет что-то вроде ADD DX BX, что нормально, никаких особых проблем. Вы просто говорите, что регистр DX такой же, как HL, а BX такой же, как DE. Проблема в том, что инструкция 8086 имеет побочный эффект установки флага нуля, а инструкция 8080 — нет. При механической трансляции вы в конечном итоге делаете что-то вроде сохранения флагов, восстановления флагов, выполнения некоторых сдвигов и поворотов и так далее. Это добавляет около пяти или шести дополнительных инструкций, чтобы получить тот же семантический эффект. В коде 8080 есть много последовательностей, которые производят очень странные последовательности в коде 8086; они просто не очень хорошо отображаются из-за регистров флагов и тому подобного. Способ, которым мы передаем программное обеспечение, называется XLT-86. Он вышел около шести месяцев назад. ПК: Под «лучшим» кодом вы подразумеваете меньший размер? Килдалл: На двадцать процентов меньше, чем если бы вы просто взяли каждый код операции и сделали прямую трансляцию, сохранив регистры для сохранения семантики. ПК: Каков размер транслируемой программы по сравнению с версией 8080? Килдалл: Если вы возьмете программу 8080, перенесете ее на 86-битную платформу и сделаете трансляцию XLT-86, вы обнаружите, что она примерно на 10–20 процентов больше. С 16-битными машинами сложнее решать все проблемы; вы получаете коды операций, которые в среднем немного больше. Интересное явление заключается в том, что одна из причин, по которой вы не получаете огромного увеличения скорости в 16-битном мире, заключается в том, что вы запускаете больше кодов операций по шине данных. […]
[…]
Роландер
: Я уже упоминал ранее, что
Гэри
любил подходить к проблеме как архитектор. […] И он рисовал самые красивые изображения своих структур данных. […] И когда он закончил это […] и убедился, что структуры данных теперь верны, он входил в невероятный маниакальный режим кодирования. Он мог работать по 20 часов в день […] он просто исчезал в эти периоды времени. В паре таких случаев, когда он что-то запускал в первый раз, что могло происходить среди ночи. И все вы, кто писал программное обеспечение, видели, например, что когда оно впервые появлялось на экране, вы должны были кому-то об этом рассказать. Моя жена Лори скажет вам, что у меня было несколько таких звонков среди ночи,
LOGO
был одним из примеров, XLT 86 был другим, когда он запустил его в первый раз, и ему нужно было, чтобы кто-то это увидел. Поэтому неважно, который был час, он звонил мне, я должен был прийти и посмотреть, как оно работает. […][30] [31] (33 страницы)
[…] Транслятор ассемблерного кода с 8 на 16 бит теперь доступен в
Digital Research
. Названный XLT86, он разработан, чтобы помочь облегчить трудоемкий процесс преобразования
программных продуктов
CP/M с микрокомпьютеров на
базе 8080
на микрокомпьютеры на базе
8086.
XLT86 можно использовать для перевода любых программ на языке ассемблера, совместимых с форматом ассемблера ASM, MAC или RMAC компании Digital Research. Транслятор программ XLT86 сначала считывает программу на языке ассемблера 8080, а затем создает выходной файл, содержащий операторы на языке ассемблера 8086, приемлемые для ассемблера Digital Research ASM-86. В отличие от других преобразователей кода 8086, которые транслируют одну инструкцию 8080 в десять инструкций 8086, XLT86 выполняет обширный
анализ потока данных
для определения использования регистров во всей исходной программе. Информация, собранная в ходе этого анализа, используется во время трансляции программы для устранения ненужных операций сохранения и восстановления флагов. «Получающаяся в результате программа 8086 проще и компактнее, чем эквивалентные программы, созданные другими трансляторами», — говорит Курт Геске из маркетинговой группы Digital Research. «Более того, XLT86 позволяет OEM-производителям, конечным пользователям и поставщикам программного обеспечения сохранять свои инвестиции в программы на языке ассемблера на базе 8080 при переходе на 16-разрядные компьютеры на базе 8086 за счет сокращения усилий по преобразованию». Программы, транслируемые XLT86, работают как на
CP/M-86
, так и на
MP/M-86
[…] XLT86 доступен немедленно. Он работает на любой 8-битной
системе CP/M или
MP/M , или под операционной системой
VMS
для использования на
миникомпьютерах
серии
VAX
корпорации Digital Equipment
. Версия CP/M стоит 150
долларов
. Версия VAX продается за 8000 долларов. […]
[…] Программа XLT86 занимает приблизительно 30 Кбайт основной памяти. Оставшаяся часть памяти, до основания
CP/M
, хранит программный граф, представляющий транслируемую программу 8086 […] Система CP/M 64 Кбайт позволяет транслировать программы
8080
размером приблизительно до 6 Кбайт. […][32] [33]
[…] По иронии судьбы, многие из методов, которые
Гэри
был пионером, сейчас заново открываются, десять лет спустя.
Apple
и
DEC
рекламируют
двоичную перекомпиляцию
как "новую" технологию для переноса существующего программного обеспечения на архитектуру
PowerPC
или
Alpha
. На самом деле, DRI представила двоичный рекомпилятор
8080
в
8086
в начале 1980-х годов. […]
[…]
Килдалл
основал
Digital Research, Inc.
(DRI) в 1976 году, которая сейчас является частью
Novell
. […] В 1980-х годах DRI представила
двоичный рекомпилятор
. […]
В марте 1995 года
Ассоциация издателей программного обеспечения
посмертно почтила
Гэри
за его вклад в компьютерную индустрию. Они перечислили некоторые из его достижений: […] В 1980-х годах через
DRI
он представил
двоичный рекомпилятор
. […]
[…] 8086/88 Assembler With Translator $99.50 Доступно для MSDOS, PCDOS или CP/M-86 […] Этот пакет также включает […] транслятор исходного кода 8080 в 8086 (без ограничений на размер программы для перевода) […] Пакет кросс-разработки Z-8000 $199.50 […] Этот мощный пакет включает транслятор исходного кода языка ассемблера Z-80/8080 в Z-8000 […] Трансляторы предоставляют исходный код Z-8000 из исходного кода Intel 8080 или Zilog Z-80. Исходный код Z-8000, используемый этими пакетами, находится в уникальном синтаксисе 2500AD с использованием мнемоники Zilog, разработанной для упрощения перехода от написания кода Z-80 к Z-8000 […] 8086 и Z-8000 XASM включают трансляторы исходного кода […](Примечание. 8086/88 XASM доступен для Z-80 CP/M, Zilog System 8000 UNIX , Olivetti M-20 PCOS ; Z-8000 XASM для Z-80 CP/M, MS-DOS, CP/M-86, Olivetti M-20 PCOS.)
[…]
Zilog, Inc.
представила серию модульных и расширяемых систем разработки продуктов (PDS) для проектов микрокомпьютеров на базе
Z8
,
Z80
и
Z8000
. Все четыре версии системы PDS 8000 — модели 10, 15, 25 и 30 — имеют […] Стандартной функцией каждой системы является пакет разработки программного обеспечения Z8000, который включает в себя процедуру управления файлами
ZDOSII
, высокоуровневые структурированные ассемблеры PLZ/ASM, транслятор Z80/Z8000 и макропроцессор Z8000 L и MACP. […] Модели 10 и 25 имеют те же характеристики, что и модели 15 и 30 соответственно. но 10 и 25 не включают модуль разработки Z8000. Модель PDS 10 стоит 10 485 долларов США; модель 15 — 11 995 долларов США; модель 25 — 20 000 долларов США; и модель 35 — 21 500 долларов США. Все четыре системы доступны через 30 дней после получения заказа. […]
[…] Таблица 1. Характеристики 16-разрядного микропроцессора […]
Zilog
8000 […] Программное обеспечение […] Zilog планирует поддерживать
Z8000
с помощью трансляторов для PLZ,
BASIC
,
COBOL
и
FORTRAN
. Они позволят преобразовывать код
Z80
в код Z8000, поскольку набор Z8000 является надмножеством Z80. […]
…] Z8000 TRANSLATOR: предоставляет быстрые средства для преобразования существующей программы на языке ассемблера
Z80
в код
Z8000
и формат программы PLZ/ASM. […][34] [35]
[…]
Компания Digital Research
также объявила о планах по
версии
CP/M для
Z8000
. Прикладное программное обеспечение будет перенесено на Z8000, когда станет доступно больше программного обеспечения для разработки. Необходим коммерчески доступный транслятор с
Z80
на Z8000. […]
[…] и
Zilog
, и
AMC
предлагали
программы перевода
с
Z80
на Z8000 . Как и переводчик
Intel
8080
на
8086
, это приводило к немедленному раздуванию, если вы не были готовы вручную оптимизировать результат. Большая часть раннего кода MS-DOS была автоматически переведена и изменена для кода 8080 CP/M. Я знаю, что большая часть
SuperCalc
для ПК была, например. Ранние (например, 3.3) версии
Wordstar
для DOS, вероятно, также были. […] Существовали трансляторы исходного кода Z80 в Z8000, но это был не простой процесс («строгий» и «расслабленный» режимы; иногда одна инструкция Z80 в несколько инструкций Z8000). 8086 гораздо ближе к 8080, чем Z8000 к Z80. […]
[…] Pasmo — это кросс-ассемблер Z80 […], который […] может генерировать объектный код в следующих форматах: необработанный двоичный файл, Intel HEX , PRL для CP/M Plus RSX , Plus3Dos ( диск Spectrum +3 ), TAP, TZX и CDT ( образы лент эмуляторов Spectrum и Amstrad CPC ), AmsDos (диск Amstrad CPC) и MSX (для использования с BLOAD с диска в Basic). Начиная с версии 0.5.0 […] также может генерировать код 8086 из исходников Z80 в двоичном формате для файлов Ms-dos COM или в формате CP/M 86 CMD . […][42] [43]
[…] Вместо этого он выполняет программы, написанные на языках высокого уровня, таких как BASIC и C (компилятор Pascal и транслятор с 8088 на Z8000 находятся в разработке. […]и Ciarcia, Steve (июнь 1984 г.). «Козырная карта – Часть 2: Программное обеспечение – компиляторы TBASIC и C и сборка» (PDF) . BYTE – Журнал малых систем . Ciarcia's Circuit Cellar. Том 9, № 6. McGraw-Hill, Inc. стр. 115–122. ISSN 0360-5280 . Получено 29.01.2020 .
[…] Я ожидаю, что трансляторы объектного кода для преобразований Z80 в Z8000 и 8088 в Z8000 скоро будут доступны […], также доступно как Ciarcia, Steve (1990). "Trump Card – Часть 1: Аппаратное обеспечение – Ускорьте свой IBM PC с помощью 16-битной сопроцессорной мощности и Часть 2: Программное обеспечение – Компиляторы TBASIC и C и сборка". В Gonneau, Daniel; Bernardi, Fred; Ausburn, Richard (ред.). Ciarcia's Circuit Cellar . Том 7. McGraw-Hill Publishing Company . С. 138–152, 153–160. ISBN 0-07-010969-9. Архивировано из оригинала 2020-02-01 . Получено 2020-01-29 .[44]