Компилятор исходного кода
Выполнение программы |
---|
Общие понятия |
Типы кода |
Стратегии составления |
Известное время выполнения |
|
Известные компиляторы и наборы инструментов |
|
Преобразование данных |
---|
Концепции |
Языки трансформации |
Техники и трансформации |
Приложения |
Связанный |
Транслятор исходного кода , компилятор исходного кода ( компилятор S2S ), транскомпилятор или транспилятор. [ 1 ] [ 2 ] [ 3 ] — это тип транслятора , который принимает исходный код программы, написанной на языке программирования, в качестве входных данных и создает эквивалентный исходный код на том же или другом языке программирования. Транслятор из исходного кода осуществляет преобразование между языками программирования, которые работают примерно на одном и том же уровне абстракции , в то время как традиционный компилятор осуществляет перевод с языка программирования более высокого уровня на язык программирования более низкого уровня . Например, переводчик исходного кода может выполнять перевод программы с Python на JavaScript , в то время как традиционный компилятор переводит с такого языка, как C , на ассемблер или Java в байт-код . [ 4 ] Автоматический распараллеливающий компилятор часто принимает программу на языке высокого уровня в качестве входных данных, а затем преобразует код и аннотирует его аннотациями параллельного кода (например, OpenMP ) или языковыми конструкциями (например, Fortran 's). 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 ]
Переводчики языка ассемблера
[ редактировать ]Так называемые трансляторы языка ассемблера — это класс трансляторов из исходного кода, преобразующих код с одного языка ассемблера в другой, в том числе (но не ограничиваясь этим) между различными семействами процессоров и системными платформами .
Интел КОНВ86
[ редактировать ]Intel продавала свой 16-битный процессор 8086 как исходный код, совместимый с 8080 , 8-битным процессором. [ 8 ] Для поддержки этого у Intel был переводчик на основе ISIS-II с исходного кода 8080 на 8086 под названием CONV86. [ 9 ] [ 10 ] [ 11 ] [ 12 ] (также называемый CONV-86 [ 13 ] и КОНВЕРТИРОВАТЬ 86 [ 14 ] [ 15 ] ), доступная OEM- заказчикам с 1978 года, возможно, это самая ранняя программа такого рода. [ номер 1 ] Он поддерживал несколько уровней трансляции и работал на частоте 2 МГц на системе разработки микропроцессоров Intel MDS-800 с 8-дюймовыми дисководами . По отзывам пользователей, работало оно не очень надежно. [ 16 ] [ 17 ]
SCP ТРАНС86
[ редактировать ]Компания 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
[ редактировать ], также называемая TRANS86, Компания Sorcim с декабря 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
[ редактировать ]Гораздо более сложной и первой, которая внедрила оптимизирующие технологии компилятора в процесс перевода исходного кода, была Digital Research в сентябре 1981 года. XLT86 1.1 была доступна к апрелю 1982 года. XLT86 1.0 компании [ 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 ] Передовые микрокомпьютеры (AMC) [ 51 ] [ 17 ] и 2500 AD Software также предлагали переводчики Z80 на Z8000. [ 46 ] Последний получил название ТРАНС. [ 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 ]
Имя | Исходный язык | Целевой язык | Комментарии |
---|---|---|---|
Вавилон | ES6+ ( JS ) | ES5 | |
Цербер Икс | Цербер | JavaScript , Java , C++ , C# | |
Спереди | С++ | С | |
ClojureScript | Кложур | JavaScript | |
Дафни | Дафни | C#, JS , Java , C++, Go , Python | |
Дарт | Дарт | JavaScript | |
h5 [ 57 ] | С# | JavaScript | |
Смешанный | Смешанный | ActionScript 3 , JavaScript, Java, C++, C#, PHP , Python , Lua | |
Хип-хоп для PHP (HPHPc) | PHP | С++ | |
J2ObjC [ 58 ] | Ява | Цель-C | |
JSweet [ 59 ] | Ява | Машинопись | |
Майя [ 60 ] | Майя | Верилог | |
НАКА | КОБОЛ , Ява | КОБОЛ, Ява | |
mrustc | Ржавчина | С | Экспериментальный компилятор, способный загрузить официальный компилятор Rust (rustc). |
Nim | Nim | С, С++, JavaScript | |
Рескрипт | OCaml | JavaScript | |
Свифтифицируйте [ 61 ] | Цель-C | Быстрый | |
Налить | Налить | С | |
Басня | Ф# | JavaScript | |
Басня Питон | Ф# | Питон |
Портирование кодовой базы
[ редактировать ]Когда разработчики хотят переключиться на другой язык, сохранив при этом большую часть существующей кодовой базы, возможно, лучше использовать транскомпилятор, чем переписывать все программное обеспечение вручную. В зависимости от качества транскомпилятора код может нуждаться или не нуждаться в ручном вмешательстве для правильной работы. Это отличается от «транскомпилированных языков», где спецификации требуют, чтобы выходной исходный код всегда работал без изменений. Все транскомпиляторы, используемые для переноса кодовой базы, будут ожидать ручной корректировки выходного исходного кода, если существует необходимость достижения максимального качества кода с точки зрения читабельности и соглашения платформы.
Инструмент | Исходный язык | Целевой язык | Комментарии |
---|---|---|---|
2to3 сценарий | Питон 2 | Питон 3 | Несмотря на то, что 2to3 делает все возможное для автоматизации процесса перевода, часто требуются дополнительные правки вручную. |
Эмскрипты | LLVM Байт-код | JavaScript | Это позволяет, например, запускать кодовые базы C/C++ в браузере. |
c2go [ 62 ] | С | Идти | До выпуска 1.5 компилятор Go был написан на C. Был разработан автоматический транслятор для автоматического преобразования кодовой базы компилятора из C в Go. [ 63 ] [ 64 ] Начиная с Go 1.5, «компилятор и среда выполнения теперь реализованы на Go и ассемблере без C». |
C2Ржавчина [ 65 ] | С | Ржавчина | C2Rust принимает код C в качестве входных и выходных данных. unsafe Код Rust с упором на сохранение совместимости с исходной кодовой базой. Для этого процесса существует несколько документально подтвержденных ограничений. Преобразование полученного кода в безопасный и идиоматический код Rust выполняется вручную после перевода, хотя существует автоматизированный инструмент, облегчающий эту задачу. [ 65 ]
|
Веб-инструментарий Google | Java- программа, использующая определенный API | JavaScript | Код Java немного ограничен по сравнению с обычным кодом Java. |
Js_of_ocaml [ 66 ] кислорода | OCaml | JavaScript | |
J2Eif [ 67 ] | Ява | Эйфелева | Результирующий код Eiffel имеет классы и структуры, аналогичные программе Java, но соответствующие синтаксису и соглашениям Eiffel. |
C2Eif [ 68 ] | С | Эйфелева | Полученный код Эйфеля содержит классы и структуры, которые стараются быть максимально чистыми. Инструмент является завершенным и использует встраивание кода C и ассемблера, если он не может правильно его перевести. |
Пропускать [ 69 ] | Быстрый | Котлин | Skip — это плагин Xcode, который транспилирует приложение или библиотеку Swift для iOS с помощью SwiftUI в эквивалентный собственный код Kotlin для Android с помощью Jetpack Compose. |
Свифтифицируйте [ 70 ] | Цель-C | Быстрый | Swiftify — это онлайн-инструмент для преобразования исходного кода из Objective-C в Swift. Он помогает разработчикам, которые переносят всю или часть своей кодовой базы iOS в Swift. Преобразование направлено в первую очередь на преобразование синтаксиса между Objective-C и Swift, и оно помогло, потому что Apple предприняла усилия для обеспечения совместимости между средами выполнения Swift и Objective-C. |
Конвертер времени выполнения [ 71 ] | PHP | Ява | Runtime Converter — это автоматический инструмент, который преобразует исходный код PHP в исходный код Java. Существует библиотека времени выполнения Java для определенных функций языка PHP, а также возможность вызова самого двоичного файла PHP с использованием JNI для вызовов стандартной библиотеки PHP и функций расширения. |
Конвейеры транскомпилятора
[ редактировать ]Конвейер транскомпилятора — это результат рекурсивной транскомпиляции . Объединив вместе несколько слоев технологии с этапом транскомпиляции между каждым слоем, технология может быть многократно преобразована, эффективно создавая распределенную независимую от языка спецификацию .
XSLT — это инструмент преобразования общего назначения, который можно использовать между множеством различных технологий для создания такого конвейера производного кода .
Рекурсивная транскомпиляция
[ редактировать ]Рекурсивная транскомпиляция (или рекурсивная транскомпиляция ) — это процесс применения понятия рекурсивной транскомпиляции для создания конвейера преобразований (часто начиная с единственного источника истины ), которые неоднократно превращают одну технологию в другую.
Повторяя этот процесс, можно превратить A → B → C → D → E → F, а затем обратно в A(v2). Некоторая информация будет сохраняться через этот конвейер от A → A(v2), и эта информация (на абстрактном уровне) демонстрирует, в чем согласуется каждый из компонентов A–F.
В каждой из различных версий, создаваемых конвейером транскомпилятора, эта информация сохраняется. Она может принимать самые разные формы и размеры, но к тому времени, когда она возвращается к A (v2), после шестикратной транскомпиляции в конвейере, указанном выше, информация возвращается в исходное состояние.
Эта информация, которая выдерживает преобразование в каждом формате, от A–F–A(v2), является (по определению) производным контентом или производным кодом .
Рекурсивная транскомпиляция использует тот факт, что транскомпиляторы могут либо сохранять переведенный код как можно ближе к исходному коду, чтобы облегчить разработку и отладку исходного исходного кода, либо они могут настолько сильно изменить структуру исходного кода, что переведенный код код не похож на исходный код. Существуют также утилиты отладки, которые отображают транскомпилированный исходный код обратно в исходный код; например, карты исходного кода JavaScript позволяют отображать код JavaScript, выполняемый веб-браузером, обратно в исходный источник на языке, транскомпилированном в JavaScript.
См. также
[ редактировать ]- Бинарный рекомпилятор — компилятор, преобразующий или оптимизирующий уже скомпилированный код.
- C в HDL — преобразование C-подобных программ в языки описания оборудования.
- Генерация кода (компилятор) – преобразование компьютерного кода в машиночитаемую форму.
- DMS Software Reengineering Toolkit – инструменты преобразования программ. – структура компиляции между исходными кодами, использующая явные правила перезаписи, управляемые шаблонами.
- f2c - программа для преобразования кодовых - компилятор из исходного кода из Fortran 77 в C
- Honeywell Liberator — семейство мэйнфреймов. (запуск программ IBM 1401 на Honeywell H200 ).
- Промежуточное представление — структура данных или код, используемые внутри компилятора или виртуальной машины для представления исходного кода.
- Привязка языка - библиотека программного обеспечения, которая позволяет использовать другую библиотеку, написанную на другом языке программирования.
- Независимая от языка спецификация - стандарт компьютерного программирования, обеспечивающий совместимость между языками программирования.
- Совместимость языков – совместимость языков программирования.
- Оптимизатор объектного кода , также известный как двоичная оптимизация — аспект компиляции программного обеспечения.
- Препроцессор – программа, обрабатывающая входные данные для другой программы.
- Трансформация программы
- ROSE (фреймворк компилятора) - фреймворк компилятора из исходного кода.
- Переводчик (вычисления) - Компьютерная программа, которая переводит код с одного языка программирования на другой.
- XSLT – язык преобразования XML-документов.
Примечания
[ редактировать ]- ^ Одна коммерческая программа, которая, как известно, была машинно переведена под ISIS-II из исходного кода 8080 CP/M-80 в 8086 CP/M-86 с использованием Intel CONV86, была MicroPro от WordStar 3.0 в сентябре 1981 года.
Ссылки
[ редактировать ]- ^ Программные системы ARC (июнь 1988 г.). «Превратите BASIC в транспилятор C:B→C » . Журнал Amiga (Реклама) (на немецком языке). Том 1988, № 6. Эсслинген, Германия: Markt & Technik Verlag Aktiengesellschaft . п. 101. ISSN 0933-8713 . Архивировано из оригинала 01 февраля 2020 г. Проверено 18 января 2020 г.
[…] Внимание программистов на C и Basic ! […] Теперь существует B→C TRANSPILER, уникальная система программного обеспечения для конвертации от ARC […] B→C TRANSPILER переводит исполняемые базовые программы AMIGA в компилируемый код C. […] Код C можно интегрировать непосредственно в базовые программы с помощью специальных команд. […] Основные команды передаются в расширенном виде. ( режим HAM , IFF Поддерживаются и т. д.). […] Благодаря этой концепции последнего поколения B→C TRANSPILER уникальным образом сочетает в себе преимущества интерпретатора и компилятора […]
[1] - ^ Jump up to: а б Паунтейн, Дик (декабрь 1989 г.). «Настройка параллельных программ, часть 1: Occam Transpiler, находящийся в стадии разработки, упростит написание программного обеспечения для параллельной обработки» . БАЙТ . Том. 14, нет. 13. McGraw-Hill, Inc., стр. 349–352. ISSN 0360-5280 . ковчег:/13960/t34188734 . Проверено 6 января 2022 г. п. 350:
[…] Название «Транспилер» предполагает сочетание транспьютера и компилятора , точно так же, как транспьютер был придуман из транзистора и компьютера (т. е. компьютера, который также является компонентом). […]
(Примечание. Использует термин «транспилятор Occam» как синоним компилятора «источник-источник», работающего как препроцессор , который принимает обычную программу Occam в качестве входных данных и получает новый исходный код Occam в качестве выходных данных со ссылкой на- к нему добавлены назначения каналов и т. д., тем самым настраивая его для параллельной обработки для максимально эффективной работы в сети транспьютеров .) - ^ Sector 7 Software Limited (7 декабря 1993 г.) [22 сентября 1992 г.]. «Транспайлер» . Официальный вестник Ведомства США по патентам и товарным знакам . Класс 9. Том. 1157 (1-е изд.). Бедфорд, Бедфордшир, Великобритания: Ведомство США по патентам и товарным знакам . п. ТМ 81. СН 74-316.610. Архивировано из оригинала 01 февраля 2020 г. Проверено 18 января 2020 г.
[…] Приоритет, заявленный в соответствии с разд. 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 году. - ^ Jump up to: а б «Транспайлер» . Devopedia.org . 17 марта 2017 г. Архивировано из оригинала 05.11.2019 . Проверено 22 июня 2019 г.
- ^ «Типы компиляторов» . компиляторы.нет. 1997–2005 гг. Архивировано из оригинала 19 июля 2019 г. Проверено 28 октября 2010 г.
- ^ Фаулер, Мартин (12 февраля 2013 г.). «Прозрачная компиляция» . Архивировано из оригинала 01 января 2020 г. Проверено 13 февраля 2013 г.
- ^ Эпические игры ; Мозилла . «Эпическая цитадель HTML5» .
- ^ Скэнлон, Лео Дж. (1988). Язык ассемблера 8086/8088/80286 . Книги Брейди. п. 12 . ISBN 978-0-13-246919-7 .
[…] 8086 совместим программно с 8080 на уровне ассемблера. […]
- ^ Jump up to: а б Конвертер языка ассемблера MCS-86. Инструкции по эксплуатации для пользователей ISIS-II . А30/379/10К TL. Санта-Клара, Калифорния, США: Корпорация Intel . Март 1979 г. [1978]. Заказ № 9800642А . Проверено 18 января 2020 г. [2] (Примечание. Более новую версию данного руководства можно найти здесь .)
- ^ Jump up to: а б Конвертер языка ассемблера MCS-86. Инструкции по эксплуатации для пользователей ISIS-II . А175/280/7,5 эт. Санта-Клара, Калифорния, США: Корпорация Intel . Февраль 1980 г. [1978]. Заказ № 9800642-02 . Проверено 18 января 2020 г. [3] [4] (Примечание: старую версию данного руководства можно найти здесь .)
- ^ «Среда разработки 8086/8087/8088». Справочное руководство по языку ASM86 (PDF) . Санта-Клара, Калифорния, США: Корпорация Intel . Ноябрь 1983 г. [сентябрь 1981 г.]. стр. 1-1–1-2. Номер заказа 121703-003 . Проверено 28 ноября 2023 г. (404 страницы)
- ^ Нельсон, Росс П. (январь 1989 г.) [1988]. Книга 80386: Руководство программиста на ассемблере для 80386 . Серия программ Microsoft (1-е изд.). Майкрософт Пресс . п. 2. ISBN 978-1-55615-138-5 .
[…] Программа-переводчик Intel может конвертировать 8080 программы на ассемблере в программы на ассемблере 8086 […]
- ^ Руководство пользователя семейства 8086 . Корпорация Интел . Октябрь 1979 г. [1978]. стр. 2-74, 2-92, Б-176. Заказ № 9800722-03 . Проверено 18 января 2020 г.
[…] другие программы дополняют инструменты разработки программного обеспечения, доступные для 8086 и 8088 . […] CONV-86 может выполнить большую часть работы по преобразованию, необходимой для перевода . в исходных модулей ассемблера 8080/8085 исходные модули ASM-86 […] Чтобы облегчить преобразование программ на ассемблере 8080A/8085A для работы на плате iSBC 86/12A, CONV-86 доступен под операционной системой ISIS-II .
[5] [6] - ^ Jump up to: а б с д и Фрайбергер, Пол (19 октября 1981 г.). «Переводчики программ делают это буквально, а иногда и в контексте» . InfoWorld – Новости для пользователей микрокомпьютеров . Специальный раздел: Совместимость с компьютером. Том. 3, нет. 22. Popular Computing, Inc. с. 19. ISSN 0199-6649 . Архивировано из оригинала 01 февраля 2020 г. Проверено 15 января 2020 г.
[…] «Если у вас нет схемы перевода, учитывающей особые особенности целевого микропроцессора, автоматический переводчик не сможет работать», — объясняет Дэниел Дэвис, программист из Digital Research . «В конечном итоге вы получите прямую транслитерацию ». […] Несмотря на все эти ограничения, в последнее время достигнут прогресс в развитии переводчиков. В частности, компания Digital Research представила свой транслятор ассемблерного кода с 8 на 16 бит. Согласно исследованию, проведенному президентом Digital Research Гэри Килдаллом , XLT86, по-видимому, предлагает преимущества по сравнению с ранее доступной технологией программного переводчика. Подобно Sorcim Trans от и Convert 86 от Intel , пакет Килдалла транслирует код на языке ассемблера из Микропроцессор 8080 на 8086 . Однако Килдалл применил метод анализа глобального потока , который учитывает некоторые основные недостатки других переводчиков. Процедура анализирует использование регистров и флагов в разделах кода 8080 с целью исключения несущественного кода. По словам программиста Digital Research Дэвиса, алгоритм, который использует Килдалл, позволяет переводчику учитывать контекст при переводе программы. До сих пор одной из главных проблем любой программы-переводчика была неспособность программы делать что-то большее, чем транслитерацию. Если новый переводчик Digital Research действительно продвинет технологию до такой степени, что можно будет учитывать контекст, на рынке микрокомпьютеров может появиться больше программных переводчиков.
- ^ Jump up to: а б с д и ж г час я дж к Тейлор, Роджер; Леммонс, Фил (июнь 1982 г.). «Восходящая миграция. Часть 1: Переводчики. Использование программ перевода для перемещения программ CP/M-86 в CP/M и MS-DOS» [Использование программ перевода для перемещения программ CP/M в CP/M-86 и MS-DOS] (PDF) . БАЙТ . Том. 7, нет. 6. BYTE Publications Inc., стр. 321–322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344. ISSN 0360-5280 . КОДЕН БАЙТЕДЖ . Архивировано (PDF) из оригинала 16 января 2020 г. Проверено 15 января 2020 г.
[…] Digital Research XLT86 компании принимает стандартный исходный код 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. Вызовы BDOS из CP/M-80 преобразуются в вызовы BDOS, совместимые с CP/M-86. XLT86 имеет специальные функции для обработки перевода условных инструкций JMP и CALL в исходном коде 8080. В инструкциях 8080 инструкции JMP и CALL способны достигать любого адреса в области 64 КБ. Условные инструкции JMP 8086 могут занимать только 128 байт с каждой стороны. ИП […] зарегистрироваться. 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 страниц) - ^ Гузис, Чарльз «Чак» П. (24 февраля 2013 г.). «Re: Что, если бы IBM не выбрала процессор Intel!» . Винтажный компьютерный форум . Жанр: Другие. Архивировано из оригинала 16 января 2020 г. Проверено 15 января 2020 г.
[…] Оригинальный ассемблер 8086 работал на системе разработки MDS-80, оснащенной 8080 . Одним из первых продуктов был транслятор исходного уровня с 8080 на 8086. Напомню, что скорость перевода была феноменально медленной. […] наш продавец предложил провести конверсионный и проверочный тест в местном офисе продаж […] Мы […] начали там работу над ISIS-II серии MDS 200 — у них даже был жесткий диск, который был возмутительно дорогой вариант MDS […] все еще хрустящий, когда мы ушли на ночь. На следующее утро это все еще не было сделано […] Примерно через две недели, после того как специалисты по программному обеспечению Intel осмотрели переводчик, Эд вернулся с переведенной программой. Он был примерно на 50% больше по размеру, чем исходная версия 8085 , что как бы противоречило заявлениям Intel относительно переводчика. […]
- ^ Jump up to: а б с Гузис, Чарльз «Чак» П. (31 декабря 2016 г.) [30 декабря 2016 г.]. «Re: Код DOS в CP/M? Пересмотр…» . Винтажный компьютерный форум . Жанр: КП/М и МП/М. Архивировано из оригинала 16 января 2020 г. Проверено 15 января 2020 г.
[…] У Intel был размещенный в ISIS переводчик с кода 8080 на 8086 . Я помню, как провел очень разочаровывающий день в местном офисе продаж Intel с образцом кода 8080 (базовый пакет BCD с плавающей запятой для 8080) и несколько часов ждал, пока транслятор завершит свою работу, и разочарованный пошел домой. . Где-то через неделю мне позвонили и сообщили, что наконец-то выяснили ошибки и я могу забрать переведенную программу. Указанная программа была более чем вполовину больше оригинала с точки зрения объектных байтов. Тогда я немного скептически отнесся к заявлению Intel о том, что код 8086 был гораздо более компактным, чем его аналог 8080. И эта проклятая штука все равно не сработала, когда ее подвергли испытанию. […] Были и другие переводчики CP/M с 80 на 86 человек . Я помню, что у Сорцима был такой. У АМС было Z80 - Z8000 Также транслятор . […] Транслятор [Intel] имел несколько уровней перевода […] был «буквальный», сохраняющий детальную работу […] это был ISIS-II , работавший на MDS-800, на, каких, 2 МГц с 8 «дискеты. […]
- ^ Jump up to: а б с д и «Неофициальный список изменений Microsoft Macro Assembler (MASM)» . bytepointer.com . 21 августа 2018 г. [08 сентября 2016 г.]. Архивировано из оригинала 17 июля 2019 г. Проверено 18 января 2020 г.
[…] Тим Патерсон […] сказал следующее о своем 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». […]
- ^ Патерсон, Тим (июнь 1983 г.). «Взгляд изнутри на MS-DOS. Проектные решения, лежащие в основе популярной операционной системы. История и дизайнерские решения, лежащие в основе MS-DOS. Как она работает и куда движется» . БАЙТ . 16-битные проекты. Том. 8, нет. 6. McGraw-Hill, Inc., стр. 230–252. ISSN 0360-5280 . КОДЕН БАЙТЕДЖ . Архивировано из оригинала 17 марта 2017 г. Проверено 23 января 2020 г.
[…] Критерии проектирования 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] - ^ Jump up to: а б Сиэтлская компьютерная продукция (август 1980 г.). «86-DOS – ОПЕРАЦИОННАЯ СИСТЕМА 8086 – 95 долларов» . БАЙТ (Реклама). Том. 5, нет. 8. BYTE Publications Inc. с. 173. ISSN 0360-5280 . КОДЕН БАЙТЕДЖ . Архивировано из оригинала 5 апреля 2017 г. Проверено 18 августа 2013 г.
[…] 1. Прочтите Z80 файл исходного кода , написанный в формате CP/M, и преобразуйте его в формат 86-DOS . 2. Программа-переводчик переводит исходный код Z80 в исходный код 8086 . 3. Резидентный ассемблер ассемблирует транслированный исходный код 8086 в объектный код 8086 . 4. Небольшая ручная коррекция и оптимизация. (На исправление недавнего перевода программы 19K Z80 у нас ушло около четырех часов. Даже без оптимизации он работал вдвое быстрее оригинала! […])
[23] - ^ Патерсон, Тим (3 октября 1994 г.). «Происхождение DOS: создатель DOS излагает свой взгляд на взаимосвязь между CP/M и MS-DOS» (PDF) . Отчет микропроцессора . 8 (13). Ресурсы микродизайна (MDR). ISSN 0899-9341 . Архивировано из оригинала (PDF) 31 мая 2012 г.
[…] Чтобы заставить крупных разработчиков программного обеспечения перенести свои продукты с 8080 / Z80 на 8086 , я решил, что нам нужно сделать это как можно проще. Я уже написал транслятор исходного кода с Z80 на 8086 (размещенный на 8080 и CP/M ). Мой план заключался в том, что запуск программы 8080 CP/M через транслятор будет единственной работой, необходимой разработчикам программного обеспечения для переноса программы на 8086. Другими словами, интерфейс, используемый приложениями для запроса служб операционной системы, будет точно таким же. как CP/M после применения правил перевода . […]
- ^ Jump up to: а б Патерсон, Тим (30 сентября 2007 г.). «Проектирование DOS» . Досман дрель . Архивировано из оригинала 20 января 2013 г. Проверено 4 июля 2011 г.
[…] 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 (такие как " File Control Block "); API совместимости должен был, и я не видел смысла определять что-то другое для основного API. […] Я сам воспользовался совместимостью перевода. Написанные мной инструменты разработки, такие как ассемблер, изначально были 8-битными программами, работавшими под CP/M ( CDOS ). Я пропустил их через транслятор и получил 16-битные программы, работающие под DOS. Эти переведенные инструменты были включены в состав DOS при поставке SCP. Я не думаю, что кто-то еще когда-либо воспользовался этим процессом. […]
- ^ «Переводчик Z80 на 8086». Кросс-ассемблер Z80/8086, выпуск 1 (PDF) . Редакция А (предварительная ред.). Сиэтл, Вашингтон, США: Компьютерные продукты Сиэтла . стр. 20–21 . Проверено 18 января 2020 г.
[…] Seattle Computer Products Z80–8086 Переводчик CP работает на Z80 под управлением /M . Он принимает в качестве входных данных исходный файл Z80, написанный с использованием мнемоники Zilog / Mostek , и преобразует его в исходный файл 8086 в формате, приемлемом для нашего кросс-ассемблера 8086. Чтобы перевести файл, просто введите TRANS86 <имя файла>.<расширение>. Независимо от исходного расширения, выходной файл будет называться <имя файла>.A86 и появится на том же диске, что и входной файл. Для демонстрации переводчика включен файл TRNTEST.Z80. Весь ассемблер Z80 не переведен. […]
[24] - ^ Jump up to: а б 86-DOS – Дисковая операционная система для 8086. Руководство пользователя (PDF) . Версия 0.3 (Предварительная ред.). Сиэтл, Вашингтон, США: Компьютерные продукты Сиэтла . 1980. Архивировано (PDF) из оригинала 14 июля 2019 г. Проверено 01 февраля 2020 г.
- ^ Jump up to: а б Патерсон, Тим (19 декабря 2013 г.) [01 июля 1982 г.]. «Microsoft DOS V1.1 и V2.0: переводчик Z80–8086, версия 2.21 /msdos/v11source/TRANS.ASM» . Музей истории компьютеров , Microsoft . Архивировано из оригинала 12 ноября 2019 г. Проверено 25 марта 2014 г. [25] (Примечание. Хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и TeleVideo PC DOS 2.11 .)
- ^ SCP 86-DOS - Однопользовательская дисковая операционная система для 8086 (предварительная редакция). Сиэтл, Вашингтон, США: Компьютерные продукты Сиэтла . 1980 год . Проверено 18 января 2020 г.
[…] Транслятор исходного кода может перевести большую часть Z80 исходного кода в исходный код 8086 , приемлемый для ассемблера, после незначительной ручной коррекции. Это обеспечивает относительно быстрый и простой способ транспортировки программ между процессорами. […] TRANS-файл […] Переводчик исходного кода Z80-to-8086, вызываемый этой командой, по существу идентичен нашей версии, работающей на Z80, которая описана в конце руководства по ассемблеру. Единственные различия: 1. Транслятор называется TRANS, а не TRANS86, и он работает на 8086 под 86-DOS , а не на Z80 под CP/M . 2. Расширение выходного файла «ASM», а не «A86». […]
[26] - ^ Переводчик Z80 на 8086 (PDF) . Компьютерные продукты Сиэтла . стр. ТРАНС-1 – ТРАНС-2 . Проверено 19 января 2020 г. (23 страницы)
- ^ Хьюз, Дэвид Б. (ноябрь 1982 г.). «CP/M-86 и MS-DOS: сравнительный анализ» . Журнал ПК . Операционные системы. Том. 1, нет. 7. Software Communications, Inc., стр. 181–182, 187–190 [189]. Архивировано из оригинала 10 февраля 2020 г. Проверено 10 февраля 2020 г.
[…] Впечатляющий и полезный набор утилит для разработки программного обеспечения является стандартной функцией MS-DOS . Программа, которая преобразует 8080 или Z80 код в исходный код 8086 , компоновщик и среда выполнения библиотеки в сочетании с мощным ассемблером дают программисту все необходимое, чтобы в полной мере использовать преимущества 16-битного процессора ПК. Программа перевода MS-DOS позволяет пользователю переводить код, разработанный под CP/M-80 или SB-80 […] 8-битная операционная система […], в MS-DOS 1.2 или 2.0 . Для запуска программ в 16-битных системах могут потребоваться некоторые изменения, выходящие за рамки простого перевода, поэтому я предлагаю, чтобы этот инструмент использовался в первую очередь технически подготовленным пользователем. […]
- ^ Jump up to: а б Гарец, Марк (22 декабря 1980 г.). «По словам Гарца…» . InfoWorld – Новости для пользователей микрокомпьютеров . Том. 2, нет. 23. Popular Computing, Inc. с. 12. ISSN 0199-6649 . Архивировано из оригинала 01 февраля 2020 г. Проверено 18 января 2020 г.
[…] На прошлой неделе проходила раз в полгода Калифорнийская встреча по обмену компьютерами . Это мероприятие организовано Джоном Крейгом […] Sorcim […] дебютировал […] на выставке […] новые продукты […] Их другим продуктом был TRANS-86. TRANS-86 возьмет любой CP/M совместимый с 8080 / 8085 / Z-80, файл исходного кода , и преобразует его в код 8086 . Затем вы можете собрать новый файл с помощью ACT-86. […]
- ^ Блюменфельд, Дэн (4 декабря 1982 г.). «Переводчик Z80 на 8086» . Группа новостей : fa.info-cpm . Архивировано из оригинала 16 января 2020 г. Проверено 15 января 2020 г. [27]
- ^ «КомпьюПро» . ПК: Независимое руководство по компьютерам IBM (реклама). Том. 1, нет. 1. Software Communications, Inc., февраль – март 1982 г., стр. 70–71. Премьера/Уставный выпуск . Проверено 23 января 2020 г.
[…] ПОЧЕМУ? ГИБКОСТЬ. ЦП 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] - ^ Уоррен-младший, Джим С. (июль 1982 г.). "Что-то волшебство " (PDF) . Газета Кремниевого ущелья . Здесь распространяются слухи. Том. 7, нет. 30. Вудсайд, Калифорния, США: Компьютерная ярмарка . С. 1, 2, 4, 6, 11, 14, 15 [11] . Проверено 15 января 2020 г.
[…] Sorcim только что завершил покупку ISA . […] У них также есть переводчик с 8080 на 8086 — Trans-86 — работающий уже больше года […]
- ^ Jump up to: а б с д и Барри, Тим (5 апреля 1982 г.). «XLT-86, служебная программа CP/M от Digital Research» . InfoWorld – еженедельник новостей для пользователей микрокомпьютеров . Обзор программного обеспечения. Том. 4, нет. 13. Popular Computing, Inc., стр. 40–41, 53. ISSN 0199-6649 . Архивировано из оригинала 01 февраля 2020 г. Проверено 25 января 2020 г.
[…] XLT-86 1.1 […] XLT-86 — это аналитическая программа-переводчик, написанная на PL/I-80 . Он считывает всю исходную программу 8080, ассемблирует ее в машинный код, анализирует использование регистров, памяти и флагов и создает оптимизированную 8086 программу на языке ассемблера . […] Существует также версия XLT-86 для тех из вас, у кого есть доступ к VAX 11/750 или 11/780 . Эта версия может переводить гораздо более крупные программы. Это также стоит 8000 долларов. […] Хотя переводчик добавляет некоторые метки и приравнивает их к исходной программе как часть перевода, все исходные комментарии и метки программы передаются в переведенную программу без изменений. […] Трансляция программы происходит в пять этапов. Сначала программа сканируется и компилируется для получения значений и местоположений символов. Во-вторых, структура программы анализируется и разбивается на базовые блоки . В-третьих, базовые блоки анализируются для определения хода выполнения программы и использования ресурсов. Далее, структура блока и данные о распределении регистров собираются в список для пользователя. В-пятых, информация о потоке и исходная программа используются для создания исходной программы 8086 . […]
- ^ Килдалл, Гэри Арлен (19 апреля 1982 г.). Суэйн, Майкл ; Фрайбергер, Пол ; Маркофф, Джон Грегори (ред.). «Основатель Digital Research обсуждает свой взгляд на бизнес» . InfoWorld – еженедельник новостей для пользователей микрокомпьютеров . Специальный раздел: CP/M. Том. 4, нет. 15. Popular Computing, Inc., стр. 23–24. ISSN 0199-6649 . Архивировано из оригинала 01 февраля 2020 г. Проверено 17 января 2020 г.
[…] Килдалл: […] Полтора года назад я, наверное, тратил 75% своего времени на бизнес и 25% на программирование. XLT-86 был продуктом, над которым я тогда работал, и на его создание у меня ушло девять месяцев. Этот проект занял бы три месяца, если бы я мог сосредоточиться на нем. […]
- ^ Килдалл, Гэри Арлен (июнь – июль 1982 г.). Баннелл, Дэвид Хью ; Эдлин, Джим (ред.). «Гэри Килдалл - человек, создавший CP/M: создатель CP/M - углубленное эксклюзивное для ПК интервью с пионером программного обеспечения Гэри Килдаллом» . Журнал ПК . Операционные системы. Том. 1, нет. 3. Software Communications, Inc., стр. 32–38, 40 [35] . Проверено 17 января 2020 г.
[…] ПК: Каковы некоторые сложности, связанные с переводом программы из формы 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-битном мире, заключается в том, что вы запускаете больше кодов операций по шине данных. […]
- ^ Хюитт, Роберт; Юбэнкс, Гордон ; Роландер, Томас «Том» Алан ; Лоус, Дэвид; Мишель, Ховард Э.; Халла, Брайан; Уортон, Джон Харрисон ; Берг, Брайан; Су, Вейлянь; Килдалл, Скотт ; Кампе, Билл (25 апреля 2014 г.). Лоус, Дэвид (ред.). «Наследие Гэри Килдалла: посвящение вехе CP / M IEEE» (PDF) (транскрипция видео). Пасифик-Гроув, Калифорния, США: Музей истории компьютеров . Справочный номер CHM: X7170.2014. Архивировано (PDF) из оригинала 27 декабря 2014 г. Проверено 19 января 2020 г.
[…] Роландер : Ранее я упоминал, что Гэри любил подходить к решению проблем как архитектор. […] И он рисовал самые красивые изображения своих структур данных. […] И когда он закончил это […] и убедился, что эти структуры данных теперь верны, он впал в просто невероятный маниакальный режим кодирования. Он просто ходил по 20 часов в день […] в эти периоды времени его просто не было. Пару раз у него что-то запускалось с первого раза, это могло быть посреди ночи. И все вы, кто писал программы, видели, например, что, когда они впервые появляются на экране, вы должны кому-то об этом сказать. Моя жена Лори скажет вам, что мне пару раз звонили посреди ночи. Одним из примеров был LOGO , другим — XLT 86, где он запустил его с первого раза, и ему нужно было, чтобы кто-нибудь это увидел. Так что не имело значения, сколько сейчас времени, он звонил мне, а мне приходилось приходить и смотреть, как все работает. […]
[30] [31] (33 страницы) - ^ «XLT86 сокращает затраты на преобразование при переводе программ на ассемблере» (PDF) . Новости цифровых исследований – для пользователей цифровых исследований во всем мире . Обновление продукта. Том. 1, нет. 1. Пасифик Гроув, Калифорния, США: Digital Research, Inc., ноябрь 1981 г., стр. 2, 7. Четвертый квартал . Проверено 18 января 2020 г.
[…] Транслятор ассемблерного кода с 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 операционной системой компании Digital Equipment Corporation VAX серии для использования на миникомпьютерах . Версия CP/M стоит 150 долларов . Версия VAX продается за 8000 долларов. […]
- ^ Килдалл, Гэри Арлен (1 октября 1973 г.). «Единый подход к глобальной оптимизации программ» (PDF) . Материалы 1-го ежегодного симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования (POPL) . ПОПЛ '73. Бостон, Массачусетс, США: 194–206. дои : 10.1145/512927.512945 . hdl : 10945/42162 . S2CID 10219496 . Архивировано (PDF) из оригинала 29 июня 2017 г. Проверено 20 ноября 2006 г.
- ^ Килдалл, Гэри Арлен (май 1972 г.). Глобальная оптимизация выражений во время компиляции (кандидатская диссертация). Сиэтл, Вашингтон, США: Вашингтонский университет , Группа компьютерных наук. Диссертация №20506, Технический отчет №72-06-02.
- ^ Jump up to: а б XLT86 - Переводчик языка ассемблера с 8080 на 8086 - Руководство пользователя (PDF) (первое издание). Пасифик Гроув, Калифорния, США: Digital Research, Inc., сентябрь 1981 г., копия archive.org . Архивировано (PDF) из оригинала 18 ноября 2016 г. Проверено 18 ноября 2016 г.
- ^ «XLT86 для CP/M-80» . Цифровые исследования . Архивировано из оригинала 16 января 2020 г. Проверено 18 января 2020 г. (Примечание. Этот ZIP-архив содержит исполняемый файл CP/M-80 XLT86.COM [22 КБ], а также два наложенных файла XLT00.OVL [8 КБ] и XLT01.OVL [9 КБ].)
- ^ Гольдфарб, Бен (9 декабря 1982 г.). «Re: перевод с 8080 на 8086» . Группа новостей : fa.info-cpm . Архивировано из оригинала 01 февраля 2020 г. Проверено 18 января 2020 г.
[…] Программа XLT86 занимает примерно 30 КБ оперативной памяти. Остальная часть памяти, вплоть до основания CP/M , хранит программный граф , который представляет транслируемую программу 8086 […] Система CP/M 64 КБ позволяет транслировать 8080 программ размером примерно до 6 КБ. […]
[32] [33] - ^ Уортон, Джон Харрисон (1 августа 1994 г.). «Гэри Килдалл, пионер индустрии, умер в 52 года: создал первые микрокомпьютерные языки, дисковые операционные системы» . Отчет микропроцессора . 8 (10). MicroDesign Resources Inc. (MDR). Архивировано из оригинала 18 ноября 2016 г. Проверено 18 ноября 2016 г.
[…] По иронии судьбы, многие из методов, впервые изобретенных Гэри , открываются заново сейчас, десять лет спустя. Apple и DEC рекламируют двоичную перекомпиляцию как «новую» технологию переноса существующего программного обеспечения на архитектуру PowerPC или Alpha . Фактически, DRI представила двоичный перекомпилятор 8080 в 8086 в начале 1980-х годов. […]
- ^ «Награда SPA доктору Гэри А. Килдаллу: лауреат премии SPA 1995 года за выдающиеся достижения» . Ассоциация издателей программного обеспечения (SPA). 13 марта 1995 г. Архивировано из оригинала 21 декабря 2019 г. Получено 21 декабря 2019 г. - через www.digitalresearch.biz.
[…] В 1976 году Килдалл основал компанию Digital Research, Inc. (DRI), которая сейчас является частью Novell . […] В 1980-х годах DRI представила двоичный рекомпилятор . […]
- ^ Суэйн, Майкл (1 апреля 1997 г.). «Гэри Килдалл и коллегиальное предпринимательство» . Журнал доктора Добба . Архивировано из оригинала 24 января 2007 г. Проверено 20 ноября 2006 г.
В марте 1995 года Ассоциация издателей программного обеспечения посмертно наградила Гэри за его вклад в компьютерную индустрию. Они перечислили некоторые из его достижений: […] В 1980-х годах через DRI он представил двоичный рекомпилятор . […]
- ^ Jump up to: а б с Программное обеспечение 2500 AD (11 декабря 1984 г.). «Суперсборщики плюс самый большой в мире выбор кросс-сборщиков» . Журнал ПК (реклама). Том. 3, нет. 24. Энглвуд, Колорадо, США: PC Communications Corp., стр. 166–167. ISSN 0745-2500 . Архивировано из оригинала 01 февраля 2020 г. Проверено 24 января 2020 г.
[…] Ассемблер 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 M-20 PCOS.) - ^ «Zilog представляет модульную систему разработки» . Computerworld – еженедельник новостей для компьютерного сообщества . Том. XIII, нет. 34. Купертино, Калифорния, США: Computerworld, Inc. , 20 августа 1979 г. п. 46. ISSN 0010-4841 . Архивировано из оригинала 01 февраля 2020 г. Проверено 24 января 2020 г.
[…] 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 дней после получения заказа. […]
- ^ Орлански, Джесси, изд. (1979). Материалы 27–29 ноября 1979 г. - 1-я Межсервисная/отраслевая конференция по оборудованию для обучения . Центр. п. 413. Технический отчет NAVTRAEQUIPCEN. Архивировано из оригинала 01 февраля 2020 г. Проверено 24 января 2020 г.
[…] Таблица 1. Характеристики 16-битного микропроцессора […] Zilog 8000 […] Программное обеспечение […] Zilog планирует поддерживать Z8000 с помощью трансляторов для PLZ, BASIC , COBOL и FORTRAN . Это позволит преобразовать код Z80 в код Z8000, поскольку набор Z8000 является расширенным набором Z80. […]
- ^ Система разработки PDS 8000 – комплексный подход к проектированию систем (краткое описание продукта). Зилог . Январь 1980 года . Проверено 24 января 2020 г.
[…] Z8000 TRANSLATOR: обеспечивает быстрое преобразование существующей программы на языке ассемблера Z80 в код Z8000 и формат программы PLZ/ASM. […]
[34] [35] - ^ Томас, Ребекка А.; Йейтс, Джин Л. (11 мая 1981 г.). «Книги, платы и программное обеспечение для новых 16-битных процессоров» . InfoWorld – Газета для сообщества микрокомпьютеров . Том. 3, нет. 9. Popular Computing, Inc., стр. 42–43. ISSN 0199-6649 . Архивировано из оригинала 01 февраля 2020 г. Проверено 24 января 2020 г.
[…] Digital Research также объявила о планах по выпуску для Z8000 версии CP/M . Прикладное программное обеспечение будет перенесено на Z8000, когда появится дополнительное программное обеспечение для разработки. имеющийся в продаже переводчик с Z80 Нужен на Z8000. […]
- ^ Jump up to: а б Гузис, Чарльз «Чак» П. (21 января 2009 г.) [17 января 2009 г.]. «Re: CP/M или аналогичная ОС для 64K Z8002?» . Винтажный компьютерный форум . Жанр: КП/М и МП/М. Архивировано из оригинала 16 января 2020 г. Проверено 15 января 2020 г.
[…] И 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. […]
- ^ «Программное обеспечение 2500 AD 8080/Z-80 для перевода исходного кода Z8000 v2.06b» . 2500 AD Software, Inc., 1982. Архивировано из оригинала 1 февраля 2020 г. Проверено 24 января 2020 г. [36]
- ^ «802Z8000.ZIP 2500 AD Software 8080/Z-80 — переводчик исходного кода Z8000 v2.06e» . 2500 AD Software, Inc. Архивировано из оригинала 1 февраля 2020 г. Проверено 24 января 2020 г. [37]
- ^ Jump up to: а б Бодрато, Стефано (30 октября 2008 г.). «Исходный код to86.awk» . Гитхаб . 1.6. Архивировано из оригинала 05 января 2022 г. Проверено 5 января 2022 г.
- ^ Каллахан, Брайан (23 октября 2021 г.) [06 июля 2021 г., 06 июня 2021 г.]. «Переводчик языка ассемблера Intel 8080 CP/M 2.2 на Intel 8086/8088 MS-DOS» . 8088ify 1.2. Архивировано из оригинала 31 марта 2022 г. Проверено 28 ноября 2021 г. [38] [39] [40] [41]
- ^ «Список языков, компилируемых в JS» . Гитхаб . Архивировано из оригинала 23 января 2020 г. Проверено 11 марта 2018 г.
- ^ теоливенбаум (13 ноября 2021 г.). «h5 🚀 — компилятор C# в JavaScript» . Гитхаб . Проверено 14 ноября 2021 г.
- ^ «J2ObjC» . Архивировано из оригинала 22 октября 2019 г. Проверено 22 октября 2019 г.
- ^ "JСладкий" . Архивировано из оригинала 14 декабря 2019 г. Проверено 14 декабря 2019 г.
- ^ «Майя» . Проверено 13 мая 2020 г.
- ^ «Свифтифай» .
- ^ «C->Go переводчик» . Гитхаб . Архивировано из оригинала 07 декабря 2018 г. Проверено 11 января 2018 г.
- ^ «Примечания к выпуску Go 1.5» . Архивировано из оригинала 01 февраля 2020 г. Проверено 11 января 2018 г.
- ^ Кокс, Расс. «Переработка компилятора Go 1.3+» . Архивировано из оригинала 9 января 2020 г. Проверено 11 января 2018 г.
- ^ Jump up to: а б «Репозиторий C2Rust» . Гитхаб . 15 апреля 2022 г.
- ^ «Обзор» . Js_of_ocaml — Справочное руководство . Оксиген. Архивировано из оригинала 08.12.2018 . Проверено 8 октября 2014 г.
- ^ Страница исследований J2Eif — кафедра разработки программного обеспечения . Se.inf.ethz.ch. дои : 10.1007/978-3-642-21952-8_4 . Архивировано из оригинала 01 января 2020 г. Проверено 8 июля 2014 г.
- ^ «Страница исследований C2Eif – кафедра разработки программного обеспечения» . Se.inf.ethz.ch. Архивировано из оригинала 01 января 2020 г. Проверено 8 июля 2014 г.
- ^ "Пропускать" . Архивировано из оригинала 18 мая 2024 г. Проверено 17 мая 2024 г.
- ^ «Конвертер Swiftify Objective-C в Swift» . Проверено 14 ноября 2017 г.
- ^ «Конвертер времени выполнения» . Архивировано из оригинала 10 июля 2019 г. Проверено 14 ноября 2017 г.
Дальнейшее чтение
[ редактировать ]- Бриттен, Чарльз Рэндил (26 июня 2020 г.). «Перевод кода 8080 в 8086 — перевод Microsoft кода 8080 в 8086 и другие 16-битные процессоры» . Архивировано из оригинала 23 июля 2021 г. Проверено 28 ноября 2021 г.
- «Программирование устройств Sycor упрощается с помощью TAL II» . Computerworld – еженедельник новостей для компьютерного сообщества . Том. IX, нет. 34. Анн-Арбор, Мичиган, США: Computerworld, Inc. , 20 августа 1975 г. п. 14. ISSN 0010-4841 . Архивировано из оригинала 01 февраля 2020 г. Проверено 18 января 2020 г.
- Зерилли, Фрэнк Дж.; Деруэн, Крейг (11 декабря 1986 г.) [15 августа 1985 г., 20 декабря 1984 г., 20 ноября 1984 г.]. «Переводчик ASM с 8080 на 8086, с источником ASM» . СИМТЕЛ . XLT86.COM 1.10. Архивировано из оригинала 01 февраля 2020 г. Проверено 18 января 2020 г. 11 ноября 1984 г., версия 1.05 (Примечание. Исполняемый файл XLT86.COM для DOS [12 КБ] транслирует исходный код ассемблера Intel 8080 в исходный код ассемблера Intel 8086. Несмотря на свое название, эта реализация на ассемблере 8086 не связана с более ранней версией Digital Research. и гораздо более совершенный XLT86 .)
- Альбо, Хулиан (24 апреля 2009 г.). «Pasmo, ensamblador cruzado Z80 портативный/портативный кросс-ассемблер Z80» (на испанском и английском языках). Архивировано из оригинала 20 февраля 2020 г. Проверено 20 февраля 2020 г.
[…] 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] - Чиарсия, Стив (май 1984 г.). «Козырная карта. Часть 1. Аппаратное обеспечение. Ускорьте работу вашего IBM PC с помощью 16-битного сопроцессора» (PDF) . BYTE — Журнал малых систем . Подвал Циарсии. Том. 9, нет. 5. McGraw-Hill, Inc., стр. 40–52, 54–55. ISSN 0360-5280 . Проверено 29 января 2020 г.
[…] Вместо этого он выполняет программы, написанные на языках высокого уровня, таких как 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] - Команда разработчиков отдела микроконтроллеров (2000). «Перевод ассемблерного кода из HC05 в ST7» (PDF) (примечания по применению). СТМикроэлектроника . АН1106/0200 . Проверено 18 января 2020 г. (9 страниц) (Примечание. Этот программный переводчик был разработан ST и переводит исходный код сборки Motorola 6805 / HC05 в формате программного обеспечения 2500AD в исходный код ST7 . Исполняемый файл MIGR2ST7.EXE для Windows доступен на «MCU ON CD».)
- Купер, Линдси (30 июля 2017 г.). «Что люди имеют в виду, когда говорят «транспайлер»?» . языковая реализация. композиция.ал . Архивировано из оригинала 9 января 2022 г. Проверено 9 января 2022 г.
Внешние ссылки
[ редактировать ]- Чаудри, Габриэле «Габи» (11 июля 2009 г.). «Интел в Зилог — проект перевода» . Переводчик I2Z (на немецком языке). Архивировано из оригинала 11 сентября 2016 г. Проверено 18 января 2020 г.
- «Перевод с ассемблера PortAsm на ассемблер» . ООО «МикроАПЛ», 2017 [1996]. Архивировано из оригинала 30 июля 2019 г. Проверено 18 января 2020 г.
- «Наша методология – процесс преобразования источников в источники» . Micro-Processor Services, Inc. (MPS). Архивировано из оригинала 12 мая 2019 г. Проверено 01 февраля 2020 г.