Транслятор исходного кода , компилятор исходного кода ( S2S-компилятор ), транскомпилятор или транспилятор [1] [2] [3] — это тип транслятора , который принимает исходный код программы, написанной на языке программирования . в качестве входных данных и создает эквивалентный исходный код на том же или другом языке программирования. Транслятор из исходного кода осуществляет преобразование между языками программирования, которые работают примерно на одном и том же уровне абстракции , в то время как традиционный компилятор осуществляет перевод с языка программирования более высокого уровня на язык программирования более низкого уровня . Например, переводчик исходного кода может выполнять перевод программы с Python на JavaScript , в то время как традиционный компилятор переводит с такого языка, как C , на ассемблер или Java в байт-код . [4] Автоматический распараллеливающий компилятор часто принимает на вход программу на языке высокого уровня, а затем преобразует код и аннотирует его аннотациями параллельного кода (например, OpenMP ) или языковыми конструкциями (например, операторами Фортранаforall
). [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 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]
Компания Sorcim , также называемая TRANS86, с декабря 1980 года предлагала транслятор с 8080 на 8086. [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] пятифазный многопроходный транслятор также оптимизирует выходные данные для размера кода и позаботится о соглашениях о вызовах (CP / M-80 Вызовы BDOS были преобразованы в вызовы 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]
[…] Название «Транспилер» предполагает сочетание транспьютера и компилятора , точно так же, как транспьютер был придуман из транзистора и компьютера (т. е. компьютера, который также является компонентом). […](Примечание. Использует термин « транспилятор Occam» как синоним компилятора «источник-источник», работающего как препроцессор , который принимает обычную программу Occam в качестве входных данных и получает новый исходный код Occam в качестве выходных данных с присвоением ссылок на каналы и т. д. .добавили к нему, тем самым настроив его для параллельной обработки , чтобы она работала максимально эффективно в сети транспьютеров .)
[…] Приоритет, заявленный в соответствии с разд. 44(D) по заявке Соединенного Королевства № 1495953, поданной 31 марта 1992 г. Рег. № A1495953 от 31 марта 1992 г., срок действия истекает 31 марта 1999 г. Для компьютерного программного обеспечения и программ (кл. США 38). Первое использование 1 августа 1991 г., в торговле 1 августа 1991 г.(Примечание. Эта компания разрабатывает такие продукты, как VX/BASIC, транспилятор BASIC-to-C для DEC VMS . Несмотря на их заявление, это не первое публичное использование термина транспилятор, см., например, транспилятор ARC BASIC-to-C для 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 представила свой транслятор ассемблерного кода с 8 на 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
или
КП/М-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.
БДОС
вызовы из 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 […] все еще хрустящий, когда мы ушли на ночь. На следующее утро это все еще не было сделано […] Примерно через две недели, после того как специалисты по программному обеспечению
Intel
осмотрели переводчик, Эд вернулся с переведенной программой. Он был примерно на 50% больше по размеру, чем исходная версия
8085
, что как бы противоречило заявлениям Intel относительно переводчика. […]
[…]
У Intel
был размещенный в ISIS переводчик с кода
8080
на
8086
. Я помню, как провел очень разочаровывающий день в местном офисе продаж Intel с образцом кода 8080 (базовый пакет
BCD
с плавающей запятой для 8080), часами ждал, пока транслятор завершит свою работу, и разочарованный пошел домой. . Где-то через неделю мне позвонили и сообщили, что наконец-то выяснили ошибки и я могу забрать переведенную программу. Указанная программа была более чем вполовину больше оригинала с точки зрения объектных байтов. Тогда я немного скептически отнесся к заявлению Intel о том, что код 8086 был гораздо более компактным, чем его аналог 8080. И эта проклятая штука все равно не сработала, когда ее подвергли испытанию. […] Были и другие переводчики
CP/M
с 80 на 86 человек . Я помню, что
у Сорцима
был такой.
У 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 , эти разработчики считали, что
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 возьмет любой
файл исходного кода
8080
/
8085
/
Z-80
, совместимый с
CP/M , и преобразует его в код
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), связываете свой шестнадцатеричный файл (с помощью 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 Corporation
. Версия 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-х годов. […]
[…] В 1976 году
Килдалл
основал
компанию Digital Research, Inc.
(DRI), которая сейчас является частью
Novell
. […] В 1980-х годах DRI представила
двоичный рекомпилятор
. […]
В марте 1995 года
Ассоциация издателей программного обеспечения
посмертно наградила
Гэри
за его вклад в компьютерную индустрию. Они перечислили некоторые из его достижений: […] В 1980-х годах через
DRI
он представил
двоичный рекомпилятор
. […]
[…] Ассемблер 8086/88 с транслятором $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 М-20 СПКЯ.)
[…]
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 Model 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 в двоичном формате для COM -файлов Ms-dos или в формате CP/M 86 CMD . […][42] [43]
[…] Вместо этого он выполняет программы, написанные на языках высокого уровня, таких как BASIC и C (компилятор Pascal и переводчик с 8088 на Z8000 находятся в разработке. […]и Чиарсия, Стив (июнь 1984 г.). «Козырная карта – Часть 2: Программное обеспечение – компиляторы TBASIC и C и ассемблер» (PDF) . BYTE — Журнал малых систем . Подвал Циарсии. Том. 9, нет. 6. McGraw-Hill, Inc., стр. 115–122. ISSN 0360-5280 . Проверено 29 января 2020 г.
[…] Я ожидаю, что скоро станут доступны трансляторы объектного кода для преобразований Z80 в Z8000 и 8088 в Z8000 […], также доступен как Чиарсия, Стив (1990). «Козырная карта. Часть 1. Аппаратное обеспечение. Ускорьте работу вашего IBM PC с помощью 16-битного сопроцессора. Часть 2. Программное обеспечение — компиляторы TBASIC и C, а также ассемблер». В Гонно, Дэниел; Бернарди, Фред; Осберн, Ричард (ред.). Подвал Циарсии . Том. 7. Издательская компания «Макгроу-Хилл» . стр. 138–152, 153–160. ISBN 0-07-010969-9. Архивировано из оригинала 01 февраля 2020 г. Проверено 29 января 2020 г.[44]