ソースツーソースコンパイラ

ソースツーソース トランスレータソースツーソース コンパイラ( S2S コンパイラ)、トランスコンパイラ、またはトランスパイラ[ 1 ] [ 2 ] [ 3 ]は、プログラミング言語で記述されたプログラムのソース コードを入力として受け取り、同じまたは異なるプログラミング言語で同等のソース コードを、通常は中間表現として生成するタイプのトランスレータです。ソースツーソース トランスレータは、ほぼ同じ抽象化レベルで動作するプログラミング言語間で変換しますが、従来のコンパイラは、高レベル言語から低レベル言語に変換します。たとえば、ソースツーソース トランスレータは、プログラムをPythonからJavaScriptに変換しますが、従来のコンパイラは、 Cなどの言語からアセンブリに、またはJavaからバイトコードに変換します。[ 4 ]自動並列化コンパイラは、高レベル言語プログラムを入力として頻繁に受け取り、コードを変換して、並列コード注釈 ( OpenMPなど) または言語構造 ( Fortranのステートメントなど) で注釈を付けます。[ 2 ] [ 5 ]forall

ソースからソースへのコンパイルのもう一つの目的は、レガシーコードを、基盤となるプログラミング言語の次期バージョン、または後方互換性を損なうアプリケーションプログラミングインターフェース ( API ) に対応するように変換することです。このコンパイルでは自動コードリファクタリングが実行されます。これは、リファクタリング対象のプログラムが元の実装者の管理外にある場合(例えば、Python 2 から Python 3 へのプログラムの変換、古い API から新しい API へのプログラムの変換など)や、プログラムのサイズが大きすぎて手作業によるリファクタリングが不可能または時間がかかる場合に役立ちます。

トランスコンパイラは、元のソースコードの開発とデバッグを容易にするために、変換されたコード構造をソースコードにできるだけ近づけるか、または、変換されたコードがソースコードに似ていないほど元のコード構造を変更することがあります。[ 6 ]また、トランスコンパイルされたソースコードを元のコードにマッピングするデバッグユーティリティもあります。たとえば、JavaScriptソースマップ標準では、JavaScriptコードが縮小されたり、JavaScriptにトランスコンパイルされた言語によって生成されたりした場合に、 Webブラウザーで実行されるJavaScriptコードを元のソースにマッピングできます。

例としては、 Closure CompilerCoffeeScriptDartHaxeOpalTypeScriptEmscriptenなどが挙げられます。[ 7 ]

アセンブリ言語翻訳者

いわゆるアセンブリ言語トランスレータは、異なるプロセッサ ファミリやシステム プラットフォーム間を含む (ただしこれらに限定されない)、あるアセンブリ言語のコードを別のアセンブリ言語に変換するソース間トランスレータの一種です。

インテル CONV86

インテルは、16ビットプロセッサ8086を8ビットプロセッサ8080ソースコード互換であるとして販売した。 [ 8 ]これをサポートするために、インテルは8080から8086へのISIS-IIベースのトランスレータであるCONV86 [ 9 ] [ 10 ] [ 11 ] [ 12 ](CONV-86 [ 13 ]やCONVERT 86 [ 14 ] [ 15 ]とも呼ばれる)を1978年からOEM顧客に提供しており、これはこの種のプログラムとしてはおそらく最も初期のものであった。[注 1 ]このトランスレータは複数レベルのトランスレーションをサポートし、 8インチフロッピードライブを備えたインテルマイクロプロセッサ開発システムMDS-800で2MHzで動作した。ユーザの報告によると、あまり信頼性のある動作ではなかった。[ 16 ] [ 17 ]

SCP トランス86

シアトル・コンピュータ・プロダクツ(SCP)は、1980年に86-DOSの開発中にティム・パターソンによって書かれたTRANS86.COMを提供していた [ 15 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]このユーティリティ Intel 8080とZilog Z80アセンブリソースコード(Zilog/ Mostekニーモニック付き)をIntel 8086用の.ASMソースコード( CP/M-80用のSCPクロスアセンブラASM86とのみ互換性のある形式)に変換できたが、オペコード、レジスタ、モードのサブセットしかサポートしていなかったため、後で大幅な手作業による修正ややり直しが必要になることが多かった。[ 23 ] [ 20 ]また、単なる翻字のみを実行するため、[ 14 ] [ 18 ] [ 9 ] [ 10 ]ブルートフォースシングルパストランスレータは、レジスタとジャンプの最適化を実行しなかった。[ 24 ] [ 25 ]約24KBのRAMを消費した。[ 15 ] TRANS86.COMのSCPバージョン1は、Z80ベースのシステムで実行された。[ 15 ] [ 18 ] 86-DOSが実行されるやいなや、パターソンは、自己ホスティングにヒントを得たアプローチで、TRANS86を利用して、86-DOSで実行されるプログラムに変換した。[ 22 ] [ 18 ]バージョン2という番号が付けられ、代わりにTRANS.COMと名付けられた。[ 18 ] [ 25 ] [ 24 ] [ 26 ] [ 27 ] 1982年後半には、この翻訳ツールはマイクロソフトからも入手可能になったようです。[ 15 ] [ 28 ]

ソルシム TRANS86

TRANS86とも呼ばれるSorcimは、 1980年12月から8080から8086へのトランスレータも提供していた。 [ 29 ] [ 14 ] SCPのプログラムと同様に、CP/M-80アプリケーションコード(ASM、MAC、RMAC、またはACT80アセンブリ形式)をMS-DOS(ACT86と互換性のある形式)に移植するように設計された。[ 29 ] [ 15 ] [ 30 ] [ 31 ] ACT80形式では、いくつかのZ80ニーモニックもサポートされていた。変換は命令ごとに行われ、条件付きジャンプにはいくらかの最適化が適用された。このプログラムは、最低24KBのRAMを搭載したCP/M-80、MP/M-80、およびCromemco DOSで実行され、ソースファイルサイズに制限はなかった。[ 15 ] [ 32 ]

デジタルリサーチ XLT86

さらに洗練され、ソース変換プロセスに最適化コンパイラ技術を導入した最初のものは、1981年9月のDigital ResearchのXLT86 1.0でした。XLT86 1.1は1982年4月に利用可能になりました。[ 33 ]このプログラムはGary Kildallによって書かれ[ 14 ] [ 34 ] [ 35 ] [ 36 ]、Intel 8080プロセッサの.ASMソースコード(ASM、MAC、またはRMACアセンブラと互換性のある形式)を8086の.A86ソースコード(ASM86と互換性がある)に変換しました。8080レジスタの使用に関するグローバルデータフロー解析を使用することで、 [ 37 ] [ 14 ] [ 38 ] [ 39 ]、 5フェーズのマルチパストランスレータは、コードサイズに合わせて出力を最適化し、呼び出し規約(CP/M-80 BDOS呼び出しはCP/M-86のBDOS呼び出しにマッピングされた)を処理するため、CP/M-80およびMP/M-80プログラムはCP/M-86およびMP/M-86プラットフォームに自動的に移植できます。XLT86.COM自体はCP/M-80プラットフォーム用にPL/I-80で書かれています。[ 40 ] [ 15 ] [ 33 ] [ 41 ]プログラムはそれ自体で30KBのRAMを占有し、プログラムグラフ用の追加メモリも占有しました。 64KBのメモリシステムでは、サポートされるソースファイルの最大サイズは約6KBであったため、[ 40 ] [ 15 ] [ 42 ] [ 33 ]、それより大きなファイルは変換前にそれに応じて分割する必要がありました。[ 15 ] [ 33 ]また、XLT86はDEC VAX/VMSでも利用可能でした。[ 15 ] [ 33 ] XLT86の入出力はソースコードレベルで機能していましたが、トランスレータのプログラムのメモリ内表現と適用されたコード最適化技術は、バイナリ再コンパイルの基盤となりました。[ 43 ] [ 44 ] [ 45 ]

その他

2500 ADソフトウェアは、Z80を搭載したCP/M-80マシン、 Zilog ZEUSOlivetti PCOSシステム向けのXASMスイートの一部として、8080から8086へのソースコードトランスレータを提供していました。[ 46 ]

1979年以来、ザイログ社はPDS 8000開発システムの一部としてZ80からZ8000へのトランスレータを提供していた。 [ 47 ] [ 48 ] [ 49 ] [ 50 ] [ 51 ] [ 17 ]アドバンスト・マイクロ・コンピューターズ社(AMC)[ 51 ] [ 17 ]と2500 ADソフトウェア社もZ80からZ8000へのトランスレータを提供していた。[ 46 ]後者はTRANS [ 52 ] [ 53 ]と名付けられ、Z80 CP/M、CP/M-86、MS-DOS、PCOSで利用可能であった。[ 46 ]

Z88DK開発キットには、2008年にステファノ・ボドラトによって書かれた「to86.awk」というnasmをターゲットとしたZ80からi486へのソースコード変換ツールが付属している。 [ 54 ]これは、2003年にダグラス・ビーティー・ジュニアによって書かれた「toz80.awk」という8080からZ80へのコンバータに基づいている。[ 54 ]

2021年、ブライアン・キャラハンはnasmをターゲットとした8080 CP/M 2.2からMS-DOSへのソースコードトランスレータ「8088ify」を作成した。[ 55 ]

プログラミング言語の実装

いくつかのプログラミング言語の最初の実装はトランスコンパイラとして始まり、それらの言語の一部では今でもデフォルトの実装がトランスコンパイラです。以下の表に加えて、CoffeeScriptのメンテナーがJavaScriptにコンパイルされる言語のリストを提供しています。[ 56 ]

トランスコンパイラの一覧[ 4 ]
名前 ソース言語 対象言語 コメント
バベルECMAScript 6+ ( JavaScript ) ES5
ケルベロスXケルベロス JavaScriptJavaC++C#
CフロントC++C
ClojureスクリプトクロージュアJavaScript
コーヒースクリプトコーヒースクリプトJavaScript
ダフニーダフニーC#、JavaScriptJava、C++、GoPython
ダーツダーツJavaScript
h5 [ 57 ]C#JavaScript
エッフェルEiffelStudio経由エッフェル C、共通中間言語
エルムエルムJavaScript
寓話F#JavaScript
フェイブルパイソンF# パイソン
ハックスハックスActionScript 3、JavaScript、Java、C++、C#、PHPPythonLua
PHP 用ヒップホップ(HPHPc) PHPC++
J2ObjC [ 58 ]ジャワ Objective-C
JSweet [ 59 ]ジャワ タイプスクリプト
コトリン/JSコトリンJavaScript
マイア[ 60 ]マイア ベリログ
メランジュ OCamlReasonJavaScript
mrustcさびC 公式 Rust コンパイラ (rustc) をブートストラップできる実験的なコンパイラ
NACAコボルジャワ
ニムニムC、C++、Objective-C、JavaScript
ピュアスクリプトピュアスクリプトJavaScript
ReScriptReScriptJavaScript
サザーサザー C
スカラスカラJavaScript
スウィフトファイ[ 61 ]Objective-C迅速
VV C
ヴァラヴァラ C
ビジュアルエッフェルエッフェルC

コードベースの移植

開発者が既存のコードベースの大部分を維持しながら別の言語に切り替えたい場合、ソフトウェア全体を手作業で書き直すよりも、トランスコンパイラを使用する方がよい場合があります。トランスコンパイラの品質によっては、コードが正常に動作するために手動による介入が必要になる場合と、そうでない場合があります。これは、出力ソースコードが常に変更なしで動作することが仕様で要求されている「トランスコンパイル言語」とは異なります。コードベースの移植に使用されるすべてのトランスコンパイラでは、可読性とプラットフォーム規約の観点から最高のコード品質を実現する必要がある場合、出力ソースコードの手動調整が想定されます。

道具ソース言語対象言語コメント
2to3スクリプトPython 2Python 32to3 は翻訳プロセスの自動化に最善を尽くしますが、手動での修正が必要になることもよくあります。
エムスクリプトンLLVMバイトコードJavaScriptこれにより、例えばブラウザでC/C++コードベースを実行できるようになります。
c2go [ 62 ]C行く1.5リリース以前は、GoコンパイラはCで書かれていました。コンパイラのコードベースをCからGoに自動的に変換する自動トランスレータが開発されました。[ 63 ] [ 64 ] Go 1.5以降、「コンパイラとランタイムはCを使わずにGoとアセンブラで実装されています」。
C2ラスト[ 65 ]CさびC2RustはCコードを入力として受け取り、unsafe元のコードベースとの互換性を維持することに重点を置きながらRustコードを出力します。この処理には、いくつかの文書化された制限事項があります。変換後のコードを安全で慣用的なRustコードに変換する作業は、翻訳後に手作業で行われますが、この作業を容易にする自動ツールも存在します。[ 65 ]
Google ウェブ ツールキット特定のAPIを使用するJavaプログラムJavaScriptJava コードは、通常の Java コードに比べて少し制約があります。
OcsigenのJs_of_ocaml [ 66 ]OCamlJavaScript
J2Eif [ 67 ]ジャワエッフェル結果として得られる Eiffel コードには、Java プログラムに似たクラスと構造がありますが、Eiffel の構文と規則に従います。
C2Eif [ 68 ]Cエッフェル結果として得られるEiffelコードには、可能な限り簡潔にまとめられたクラスと構造体が含まれています。このツールは完成度が高く、Cコードとアセンブリコードを適切に変換できない場合は埋め込みます。
スキップ[ 69 ]迅速コトリンSkip は、SwiftUI を使用して Swift iOS アプリまたはライブラリを、Jetpack Compose を使用して Android 用の同等のネイティブ Kotlin コードに変換する Xcode プラグインです。
スウィフトファイ[ 70 ]Objective-C迅速Swiftifyは、Objective-CからSwiftへのオンラインソース変換ツールです。iOSコードベースの全部または一部をSwiftに移行する開発者を支援します。この変換は主にObjective-CとSwift間の構文変換を目的としており、AppleがSwiftとObjective-Cランタイム間の互換性を確保するために尽力してきたことがその実現に役立っています。
ランタイムコンバーター[ 71 ]PHPジャワランタイムコンバーターは、PHPソースコードをJavaソースコードに変換する自動ツールです。PHP言語の特定の機能に対応するJavaランタイムライブラリに加え、PHP標準ライブラリおよび拡張関数呼び出し用のJNIを使​​用してPHPバイナリ自体を呼び出す機能も備えています。

トランスコンパイラパイプライン

トランスコンパイラ・パイプラインは、再帰的なトランスコンパイルから生まれます。複数の技術層を連結し、各層の間にトランスコンパイル手順を挟むことで、技術を繰り返し変換し、分散型で言語に依存しない仕様を効果的に作成できます。

XSLTは、多くの異なる技術間で使用できる汎用変換ツールであり、このような派生的なコードパイプラインを作成します。[ 72 ]

再帰トランスコンパイル

再帰的トランスコンパイル(または再帰的トランスパイリング) は、トランスコンパイルの概念を再帰的に適用して、1 つのテクノロジーを別のテクノロジーに繰り返し変換する変換のパイプライン (多くの場合、単一の真実のソースから開始) を作成するプロセスです。

このプロセスを繰り返すことで、A → B → C → D → E → F を変換し、A(v2) に戻すことができます。このパイプラインを通じて、A → A(v2) から一部の情報が保存され、その情報(抽象レベル)は、コンポーネント A から F までの各要素が何に同意するかを示します。

トランスコンパイラパイプラインが生成するそれぞれのバージョンにおいて、その情報は保持されます。情報は様々な形やサイズをとる可能性がありますが、上記のパイプラインで6回トランスコンパイルされた後、A(v2)に戻る頃には、情報は元の状態に戻ります。

A、F、A(v2) の各形式を経た変換を生き残ったこの情報は、(定義上)派生コンテンツまたは派生コードです。

再帰的トランスコンパイルは、トランスコンパイラが、元のソースコードの開発とデバッグを容易にするために、変換されたコードをソースコードに可能な限り近づけるか、あるいは元のコードの構造を大きく変更して、変換されたコードがソースコードとは似ても似つかないものにする、という性質を利用しています。また、トランスコンパイルされたソースコードを元のコードにマッピングするデバッグユーティリティも存在します。例えば、JavaScriptソースマップを使用すると、Webブラウザで実行されるJavaScriptコードを、JavaScriptにトランスコンパイルされた言語の元のソースにマッピングすることができます。

参照

注記

  1. ^ Intelの CONV86を使用して、 ISIS-IIで8080 CP/M-80ソース コードから8086 CP/M-86に機械翻訳された商用プログラムとして知られているのは、 1981 年 9 月のMicroProWordStar 3.0です。

参考文献

  1. ^ARC-Softwaresystems (1988 年 6 月)。「Aus BASIC mach C: B→C Transpiler」 [BASIC を C: B→C Transpiler に変える]。Amiga-Magazin (広告) (ドイツ語)。 Vol. 1988年、いいえ。 6. エスリンゲン、ドイツ: Markt & Technik Verlag Aktiengesellschaft。 p. 101. ISSN  0933-8713。2020-02-01 のオリジナルからアーカイブされました2020年1月18日に取得[…] Achtung C - およびBasic -プログラマー! […] B→C TRANSPILER は ARC の Umwandlungs-Software-System から提供されています […] B→C TRANSPILER はAMIGAから提供されており、C コードを使用したコンパイラの基本プログラムです。 […] 基本プログラムの C コードを完全に理解できるようになります。 […] Basic-Befehle werden erweitert transpiliert。 ( HAM-ModusIFF、 usw. werden unterstützt)。 […] Mit dieem Konzept neuester Generation Verbindet der B→C TRANSPILER auf einzigartige Weise die Vorteile eines Interpreters mit denen eines Compilers […][1]
  2. ^ a bパウンテン、ディック(1989年12月)。「並列プログラムの構成、パート1:現在開発中のOccamトランスパイラは、並列処理向けソフトウェアの開発を容易にする」。BYTE 第14巻第13号。McGraw -Hill社。pp349– 352。ISSN 0360-5280。ark  :/13960/t34188734。2022年1月6日閲覧。p. 350: […]トランスパイラという名称は、トランスピュータ(transputer)コンパイラ(compiler)を組み合わせたものを意味する。これは、トランスピュータがトランジスタ(transistor)コンピュータ(computer)(つまり、コンポーネントでもあるコンピュータ)を組み合わせた造語であるのと同様である。[…](注: Occam トランスパイラという用語は、通常のOccamプログラムを入力として受け取り、リンクとチャネルの割り当てなどが追加された新しい Occam ソース コードを出力として生成するプリプロセッサとして機能するソースからソースへのコンパイラの同義語として使用します。これにより、トランスピュータのネットワーク上で可能な限り効率的に並列処理が実行されるように構成されます。)
  3. ^ Sector 7 Software Limited (1993-12-07) [1992-09-22]. 「トランスパイラー」 .米国特許商標庁官報. クラス9 . 第1157巻(第1版) . 英国ベッドフォードシャー州ベッドフォード:米国特許商標庁. p. TM 81. SN 74-316.610. 2020年2月1日時点のオリジナルからのアーカイブ。 2020年1月18日閲覧。 […] 英国特許出願番号1495953(1992年3月31日出願)に基づき、米国特許法第44条(D)項に基づき優先権を主張。登録番号A1495953(1992年3月31日出願、1999年3月31日失効)。コンピュータソフトウェアおよびプログラム(米国特許法第38巻)。初回使用は1991年8月1日、商用化は1991年8月1日。(注: この会社は、 DEC VMS用の BASIC から C へのトランスパイラである VX/BASIC などの製品を開発しています。彼らの主張にもかかわらず、トランスパイラという用語が初めて公に使用されたわけではありません。たとえば、1988 年のARC のAmigaBASIC から C へのトランスパイラや、 1989 年の Concurrent Technology Systems (CTS) によるOccam Transpilerなどがあります。)
  4. ^ a b "Transpiler" . devopedia.org . 2017年3月17日. 2019年11月5日時点のオリジナルよりアーカイブ。 2019年6月22日閲覧
  5. ^ 「コンパイラの種類」 .compilers.net. 1997–2005. 2019年7月19日時点のオリジナルよりアーカイブ2010年10月28日閲覧。
  6. ^ Fowler, Martin (2013年2月12日). 「Transparent Compilation」 . 2020年1月1日時点のオリジナルよりアーカイブ2013年2月13日閲覧。
  7. ^ Epic GamesMozilla「HTML5 Epic Citadel」
  8. ^ Scanlon , Leo J. (1988). 8086/8088/80286アセンブリ言語. Brady Books. p.  12. ISBN 978-0-13-246919-7[ …] 8086はアセンブリ言語レベルで8080とソフトウェア互換性があります。 […]
  9. ^ a bMCS-86アセンブリ言語コンバータ操作手順書(ISIS-IIユーザー向け). A30/379/10K TL. サンタクララ、カリフォルニア州、米国: Intel Corporation . 1979年3月 [1978]. 注文番号9800642A . 2020年1月18日閲覧[2] (注:このマニュアルの新しいバージョンはここにあります。)
  10. ^ a bMCS-86アセンブリ言語コンバータ操作手順書(ISIS-IIユーザー向け) . A175/280/7.5 FL. サンタクララ、カリフォルニア州、米国: Intel Corporation . 1980年2月 [1978]. 注文番号9800642-02 . 2020年1月18日閲覧[3] [4] (注:このマニュアルの古いバージョンはここにあります。)
  11. ^「8086/8087/8088開発環境」ASM86言語リファレンスマニュアル(PDF)サンタクララ、カリフォルニア州、米国:Intel Corporation。1983年11月[1981年9月]。pp.  1-1 – 1-2。注文番号121703-003 。 2023年11月28日閲覧(404ページ)
  12. ^ Nelson, Ross P. (1989年1月) [1988]. 『80386ブック:80386用アセンブリ言語プログラマガイド』 . Microsoftプログラミングシリーズ(第1版). Microsoft Press . p. 2. ISBN 978-1-55615-138-5[ …] Intelの翻訳プログラムは、8080アセンブラプログラムを8086アセンブラプログラムに変換することができます […]
  13. ^ 8086 ファミリ ユーザーズ マニュアル. Intel Corporation . 1979 年 10 月 [1978]. pp. 2-74, 2-92, B-176. 注文番号 9800722-03 . 2020 年 1 月 18 日閲覧. […] 他のプログラムにより、 8086および8088で使用できるソフトウェア開発ツールが補完されます。 […] CONV-86 は、 8080 / 8085アセンブリ言語ソース モジュールを ASM-86 ソース モジュールに変換するために必要な変換作業のほとんどを実行できます。 […] 8080A/8085A アセンブリ言語プログラムを iSBC 86/12A ボードで実行できるように変換するために、CONV-86 はISIS-IIオペレーティング システムで利用できます[5] [6]
  14. ^ a b c d e Freiberger, Paul (1981-10-19). 「プログラム翻訳者は文字通りに、そして時には文脈に従って翻訳を行う」 . InfoWorld – マイクロコンピュータユーザー向けニュース. 特別セクション:コンピュータ互換性 . 第3巻、第22号 . Popular Computing, Inc. p. 19. ISSN 0199-6649 . 2020年2月1日時点のオリジナルよりアーカイブ。 2020年1月15日閲覧[…] 「対象となるマイクロプロセッサの固有の特性を考慮した翻訳スキームがなければ、自動翻訳者が機能する方法はありません」と、Digital ResearchのプログラマーであるDaniel Davis氏は説明します。「最終的には直接的な翻字になってしまいます。」 […] こうした制限にもかかわらず、近年、翻訳者の開発は進歩を遂げています。最も注目すべきは、Digital Research が 8 ビットから 16 ビットへのアセンブリ コード トランスレータを発表したことです。Digital Research 社長Gary Kildall氏の研究によると、XLT86 は、従来のソフトウェア トランスレータ技術よりも進歩しているようです。Sorcim 氏の Trans や Intel の Convert 86 と同様に Kildallのパッケージは、アセンブリ言語コードを8080マイクロプロセッサから8086に変換します。ただし、Kildall 氏は、他のトランスレータの主要な欠点のいくつかを考慮したグローバル フロー解析手法を採用しています。この手順では、8080 コードのセクションでレジスタとフラグの使用状況を解析し、不要なコードを削除します。Digital Research のプログラマ Davis 氏によると、Kildall 氏が使用するアルゴリズムにより、トランスレータはプログラムを変換するときにコンテキストを考慮できます。これまで、トランスレータ プログラムの大きな問題の一つは、ソフトウェアが翻訳以上の機能を実行できないことでした。もし Digital Research 社の新しいトランスレータが実際にコンテキストを考慮できるレベルまで技術を進歩させたら、マイクロコンピュータ市場にさらに多くのソフトウェア トランスレータが普及することになるかもしれない。 
  15. ^ a b c d e f g h i j k Taylor, Roger; Lemmons, Phil (1982年6月). 「上方移行 – パート1:トランスレータ – CP/M-86プログラムをCP/MおよびMS-DOSに移行する」 [CP/MプログラムをCP/M-86およびMS-DOSに移行する変換プログラムの使用] (PDF) . BYTE . 第7巻、第6号。BYTE Publications Inc. pp.  321– 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344. ISSN 0360-5280 . CODEN BYTEDJ . 2020年1月16日時点のオリジナルよりアーカイブ(PDF) . 2020年1月15日に取得[…] Digital ResearchのXLT86は、ASM、MAC、またはRMACアセンブラと互換性のある形式の標準8080ソースコードを受け取り、8080ソースコードを、 CP/M-80またはCP/M-86で動作するASM86と互換性のある形式の8086ソースコードに変換します。XLT86はPL/I-80で記述されているため、トランスレータはCP/M-80でスタンドアロンで実行することも、 VAX/VMSでのクロス開発用に実行することもできます。5フェーズのマルチパスプロセスで最適化された8086コードを生成し、グローバルデータフロー解析を行って最適なレジスタ使用法を決定します。マクロ定義はサポートされていませんが、条件付きアセンブリディレクティブは […] マクロ展開が必要な場合は、MACまたはRMACをパススルーして編集可能なPRNファイルを生成し […] XLT86に受け入れ可能な入力用の拡張ソースファイルを作成できます。 XLT86はZ80命令を認識しません。XLT86は繰り返しループを8086ソースコードに渡します。XLT86はソースプログラム全体を解析し、ブロック構造とレジスタ/フラグの使用法を決定します。この情報に基づいて、コードを8086アセンブラコードに最適化された方法で変換します。各命令タイプの決定アルゴリズムは[…]マニュアルに記載されています[…]レジスタマッピングは一般的に[…] 8086 AXと8080 PSWの間に緩い関係があり、正確な関係は変換時のレジスタ使用法から決定されます。変換プロセスを制御するための多くのランタイムオプションが利用可能で、コマンドラインと8080ソーステキストの両方で使用できます[…] XLT86は、8080ソースコードから8086ソースコードへの変換を適切に最適化する高度なプログラムです。BDOS  CP/M-80 からの呼び出しは、CP/M-86 と互換性のある BDOS 呼び出しにマップされます。XLT86 には、8080 ソースコード内の条件付き JMP および CALL 命令の変換を処理するための特別な機能があります。8080 命令では、JMP および CALL 命令は 64K バイト領域内の任意のアドレスに到達できます。8086 の条件付き JMP 命令は、IP […] レジスタの両側で 128 バイトのみに到達できます。XLT86 は条件付き JMP のターゲットを調べます。ターゲットに到達できない場合、XLT86 は条件付き JMP の意味を変更し、長い JMP をスキップしてターゲットアドレスに到達します。8086 には条件付きの CALL または RET 命令がないため、条件の意味が変更され、無条件の CALL または RET をスキップするために短い条件付き JMP が実行されます。 […] セグメントレジスタを使用すると、コード領域とデータ領域を分離できます。 […] XLT86は式を検査し、特定の命令に適切なセグメントを決定します。[…][7] [8] [9] [10] [11 ] [12] [13] [14] [15] [16] [17] [18 ] [19] [20](13ページ)
  16. ^ Guzis, Charles "Chuck" P. (2013-02-24). 「Re: もしIBMがIntel CPUを選ばなかったら!」 . Vintage Computer Forum . ジャンル: その他. 2020年1月16日アーカイブ. 2020年1月15日閲覧. […] オリジナルの8086アセンブラは、 8080を搭載したMDS-80開発システムで動作しました。最初の製品の一つは、8080から8086へのソースレベルトランスレータでした。変換速度が驚くほど遅かったことを覚えています。 […] 営業担当者が地元の営業所で変換と検証テストを行うことを提案してくれました。 […]そこでISIS-II MDS 200シリーズで作業を開始しました。MDSとしては法外に高価なオプションであるハードディスクまでありました。 […] 夜帰る時もまだ作業は続いていました。翌朝になってもまだ終わっていませんでした […] 約2週間後、インテルのソフトウェア担当者がトランスレータを確認した後、エドは翻訳済みのプログラムを持って戻ってきました。そのプログラムはオリジナルの8085バージョンと比べて約50%もサイズが大きくなっており、インテルのトランスレータに関する主張とは矛盾するものでした […]
  17. ^ a b c Guzis, Charles "Chuck" P. (2016-12-31) [2016-12-30]. "Re: DOS code in CP/M? Revisited…" . Vintage Computer Forum . ジャンル: CP/M および MP/M。2020年1月16日時点のオリジナルからのアーカイブ。 2020年1月15日閲覧[…] Intelは、ISISホスト型の8080コードから8086コードへのトランスレータを持っていました。私は、地元のIntel営業所で、8080コードのサンプルビット(8080用の基本的なBCD浮動小数点パッケージ)を持って、トランスレータが作業を完了するのを何時間も待ち、がっかりして帰宅した、非常にイライラした一日を覚えています。約1週間後、ようやくバグが修正され、翻訳されたプログラムを受け取れるという電話を受けました。そのプログラムは、オブジェクトバイト数で見ると元のプログラムの2倍以上の大きさでした。当時、Intelが8086のコードは8080のコードよりもはるかにコンパクトだと主張していたことに、私は少し懐疑的でした。それに、あの忌々しいプログラムはテストしてみるとどうせ動作しませんでした。[…] CP/Mには他にも80から86へのトランスレータがありました。Sorcim1つ持っていたのを覚えています。AMCにもZ80からZ8000へのトランスレータがありました。[…] [Intel]のトランスレータには複数のレベルの変換がありました[…] 詳細な動作を保存する「リテラル」な変換がありました[…] それはMDS-800で動作するISIS-IIで、8インチフロッピーディスクで2MHzで動作していました[…]
  18. ^ a b c d e「Microsoft Macro Assembler (MASM) 非公式変更リスト」 . bytepointer.com . 2018年8月21日 [2016年9月8日]. 2019年7月17日時点のオリジナルよりアーカイブ。 2020年1月18日閲覧[…] Tim Paterson […] は、 SCP在籍中に作成した8086アセンブラについて次のように述べています。「私が最初に作成した 8086 アセンブラはZ80アセンブリ言語で記述され、CP/Mで動作しました。SCP 8086 CPU カードと共に ASM86 として配布されたと記憶しています。また、Z80 ソースコードを非効率ながらも実用的な 8086 ソースコードに変換するトランスレータも作成しました(Intel は公開された変換テーブルでこのアイデアを推進しました)。これは TRANS86 と呼ばれ、CP/M 用に Z80 アセンブリ言語で記述されていました。DOS動作するようになった後、このトランスレータを ASM86(およびトランスレータ自体)に適用し、DOS で動作する 8086 バージョンを作成しました。変更履歴は手元にありませんが […]、バージョンが 2 以上の場合は変換版(DOS バージョン)であるはずです。バージョン番号が 2 未満の場合、それは CP/M バージョンです。」 […]
  19. ^ Paterson, Tim (1983年6月). 「MS-DOSの内幕 – 人気のオペレーティングシステムの背後にある設計上の決定 – MS-DOSの歴史と設計上の決定、その仕組み、そして今後の展望」 . BYTE . 16-bit Designs. 第8巻第6号. McGraw-Hill, Inc. pp.  230– 252. ISSN 0360-5280 . CODEN BYTEDJ . 2017年3月17日時点のオリジナルよりアーカイブ。 2020年1月23日閲覧[…] MS-DOSの設計基準 […] MS-DOSの主要な設計要件は、CP/M-80への変換互換性でした。つまり、 CP/M用の8080またはZ80プログラムをIntel公開規則に従って8086用に変換すれば、そのプログラムはMS-DOSで適切に実行されるということです。CP/M-80への変換互換性を要件にすることで、8086ソフトウェアの迅速な開発が促進され、シアトル・コンピュータも当然これに関心を示しました。部分的には成功しました。CP/M-80プログラムを変換することを選択したソフトウェア開発者は、多くの場合、最初の試みでMS-DOSで実際に動作することを発見しました。しかし残念ながら、シアトル・コンピュータが初期に話をしたソフトウェア開発者の多くは、MS-DOSを単に無視することを好みました。IBMパーソナルコンピュータが発表されるまで、これらの開発者はCP/M-86が8086/8088コンピュータのオペレーティングシステムになると考えていました。 […]  [21] [22]
  20. ^ a b Seattle Computer Products (1980年8月). "86-DOS – 8086 OPERATING SYSTEM - $95" . BYTE (広告). 第5巻第8号. BYTE Publications Inc. p. 173. ISSN 0360-5280 . CODEN BYTEDJ . 2017年4月5日時点のオリジナルよりアーカイブ. 2013年8月18日閲覧. […] 1. CP/M形式で記述されたZ80ソースコードファイルを読み取り86-DOS形式に変換する。 2. トランスレータプログラムがZ80ソースコードを8086ソースコードに変換する。 3. 常駐アセンブラが、変換された8086ソースコードを8086オブジェクトコードにアセンブルする。 4. 軽微な修正と最適化。 (最近の19K Z80プログラムの翻訳には約4時間かかりました。最適化をしなくても、元のプログラムの2倍の速度で実行できました![…])  [23]
  21. ^ Paterson, Tim (1994-10-03). 「DOSの起源:DOSの創始者がCP/MとMS-DOSの関係について語る」(PDF) . Microprocessor Report . 8 (13). MicroDesign Resources (MDR). ISSN 0899-9341 . 2012-05-31時点のオリジナル(PDF)からのアーカイブ。 […] 大手ソフトウェア開発者に製品を8080 / Z80から8086に移植してもらうには、できるだけ簡単にする必要があると判断しました。私は既にZ80から8086へのソースコード変換ツール(8080とCP/Mをホスト)を作成していました。私の計画は、8080 CP/M プログラムをトランスレータで実行することが、ソフトウェア開発者がプロ​​グラムを 8086 に移植するために必要な唯一の作業となるというものでした。言い換えれば、アプリケーションがオペレーティングシステムのサービスを要求するために使用するインターフェースは、変換規則を適用した後は CP/M のものとまったく同じになるということです。[…] 
  22. ^ a b Paterson, Tim (2007-09-30). 「DOSの設計」 . DosMan Drivel .オリジナルから2013-01-20にアーカイブ。2011-07-04に閲覧 [ …] CP/M翻訳互換性[…] DOSが成功するには、ワープロのような便利なアプリケーションがDOS向けに書かれる必要があります。私は、SCPがアプリケーションソフトウェアの作者にDOS版プログラムの制作に尽力するよう説得するのが難しいのではないかと懸念していました。SCPの16ビットコンピュータを購入した人はほとんどいなかったため、インストールベースは小さかったのです。アプリケーションがなければ、ユーザーは多くなく、ユーザーがいなければ、アプリケーションもそれほど多くはないでしょう。[…] 既存の8ビットアプリケーションを16ビットコンピュータに移植することを可能な限り容易にすることで、より多くのプログラマーが移植に乗り出すことを期待していました。そして、CP/M の変換互換性こそが、この作業を可能な限り容易にするだろうと私には思えました。Intelは8 ビットプログラムを 16 ビットプログラムに変換するための規則を定義していました。CP/M の変換互換性とは、プログラムから CP/M へのリクエストが変換されると、DOS への同等のリクエストになることを意味します。[…] そこで私は CP/M の変換互換性を基本的な設計目標としました。そのためには、変換互換性を実装した非常に特殊なアプリケーション・プログラム・インターフェースを作成する必要がありました。私はこれを主要 API とは考えませんでした。実際には、16 ビットの世界に適しており、より多くの機能を持つ別の API がありました。どちらの API も CP/M 定義の構成要素(「ファイル制御ブロック」など)を使用していましたが、互換性 API もそれを使用する必要があり、主要 API に異なるものを定義する理由は見当たりませんでした。[…] 私自身も変換互換性を活用しました。アセンブラなどの私が作成した開発ツールは、もともと CP/M ( CDOS ) で動作する 8 ビットプログラムでした。私はそれらをトランスレータに通して、DOSで動作する16ビットプログラムを作成しました。これらの変換ツールは、SCPが出荷した際にDOSに同梱されていました。しかし、このプロセスを利用した人は他にいなかったと思います。[…]
  23. ^ "Z80 To 8086 Translator". Z80/8086 Cross Assembler Release 1 (PDF) . Revision A (Preliminary ed.). Seattle, Washington, USA: Seattle Computer Products . pp.  20– 21. 2021年11月30日にオリジナルからアーカイブ。 2020年1月18日閲覧 [ …] Seattle Computer ProductsのZ80 to 8086 Translatorは、CP/M搭載のZ80上で動作します。Zilog / Mostekニーモニックを使用して記述されたZ80ソースファイルを入力として受け取り、当社の8086 Cross Assemblerで使用できる形式の8086ソースファイルに変換します。ファイルを変換するには、「TRANS86 <filename>.<ext>」と入力するだけです。元の拡張子に関係なく、出力ファイルは<filename>.A86という名前になり、入力ファイルと同じドライブに保存されます。 TRNTEST.Z80というファイルは、トランスレータのデモ用に同梱されています。Z80アセンブリ言語全体が翻訳されるわけではありません。[…][24]
  24. ^ a b 86-DOS – 8086用ディスクオペレーティングシステム。ユーザーズマニュアル(PDF)。バージョン0.3(暫定版)。シアトル、ワシントン州、米国:シアトルコンピュータプロダクツ。1980年。 2019年7月14日時点のオリジナルよりアーカイブ(PDF) 。 2020年2月1日閲覧
  25. ^ a b Paterson, Tim (2013-12-19) [1982-07-01]. 「Microsoft DOS V1.1 および V2.0: Z80 to 8086 Translator version 2.21 /msdos/v11source/TRANS.ASM」 . Computer History Museum , Microsoft . 2019年11月12日時点のオリジナルよりアーカイブ。 2014年3月25日閲覧[25](注:出版社はこれがMS-DOS 1.1と2.0であると主張しているが、実際にはSCP MS-DOS 1.25TeleVideo PC DOS 2.11である。)
  26. ^ SCP 86-DOS – 8086用シングルユーザーディスクオペレーティングシステム(暫定版)。シアトル、ワシントン州、米国:シアトルコンピュータプロダクツ。1980年。 2020年1月18日閲覧[…] ソースコードトランスレータは、わずかな手動修正を加えるだけで、ほとんどのZ80ソースコードをアセンブラが許容する8086ソースコードに変換できます。これにより、プロセッサ間でプログラムを比較的迅速かつ容易に転送できます。[…] TRANSファイル[…] このコマンドで呼び出されるZ80-8086ソースコードトランスレータは、アセンブラマニュアルの裏表紙に記載されているZ80で動作するバージョンと基本的に同一です。唯一の違いは次のとおりです。1. トランスレータの名前はTRANS86ではなくTRANSであり、CP/MのZ80ではなく、86-DOSの8086で動作します。2. 出力ファイルの拡張子は「A86」ではなく「ASM」です。[…][26]
  27. ^ Z80 To 8086 Translator (PDF) . Seattle Computer Products . pp. TRANS-1–TRANS-2. 2021年11月30日時点のオリジナルよりアーカイブ。 2020年1月19日閲覧(23ページ)
  28. ^ Hughes, David B. (1982年11月). 「CP/M-86とMS-DOS:比較分析」 . PC Magazine . オペレーティングシステム. 第1巻、第7号. Software Communications, Inc. pp.  181– 182, 187–190 [189]. 2020年2月10日時点のオリジナルからのアーカイブ。 2020年2月10日閲覧。 […] MS-DOSには、優れた便利なソフトウェア開発ユーティリティが標準装備されています。8080またはZ80コードを8086ソースコードに変換するプログラム、リンカー、ライブラリランタイムが強力なアセンブラと組み合わさることで、PCの16ビットプロセッサを最大限に活用するために必要なすべてのものがプログラマーに提供されます。 MS-DOS変換プログラムを使用すると、CP/M-80またはSB-80 […] 8ビットオペレーティングシステム […]で開発されたコードをMS-DOS 1.2または2.0に変換できます。プログラムを16ビットシステムで動作させるには、単純な変換以上の変更が必要になる場合がありますので、このツールは主に技術訓練を受けたユーザーによって使用されることをお勧めします。 […]
  29. ^ a b Garetz, Mark (1980-12-22). 「Garetz氏によると…」 . InfoWorld – マイクロコンピュータユーザー向けニュース. 第2巻、第23号 . Popular Computing, Inc. p. 12. ISSN 0199-6649 . 2020年2月1日時点のオリジナルからのアーカイブ。 2020年1月18日閲覧[…] 先週は、半年に一度開催されるカリフォルニア・コンピュータ・スワップ・ミートが開催されました。このイベントは、ジョン・クレイグ[…] Sorcim […]が主催しています。[…] Sorcimは[…]このショーで新製品をデビューさせました[…] 彼らのもう一つの製品はTRANS-86でした。TRANS-86は、CP/M互換の8080 / 8085 / Z-80ソースコードファイルを8086コードに変換します。変換されたファイルはACT-86でアセンブルできます[…] 
  30. ^ Blumenfeld, Dan (1982-12-04). 「Z80 to 8086 translator」 .ニュースグループfa.info-cpm . 2020年1月16日時点のオリジナルよりアーカイブ。 2020年1月15日閲覧[27]
  31. ^ "CompuPro" . PC: The Independent Guide To IBM Computers (Advertisement). 第1巻第1号. Software Communications, Inc. 1982年2月~3月. pp.  70~ 71. Premiere/Charter号. 2020年1月23日閲覧. […] なぜ?柔軟性。CompuPro85/88 CPUは、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エディタで記述するか、SorcimのTRANS 86で変換するか)、SorcimのACT86でソースコードをクロスアセンブルし、CP/M 80のLOADコマンドでHEXファイルをリンクし、G&GのCPM-IBMプログラムでIBM PC用に変換し、IBM PCで実行するだけです!この手順にはMS-DOSは必要ありません![…] なぜ?それは柔軟性です。CompuPro85/88 CPUは、CP/M 80および86、またはMS-DOSで動作します。WORDSTAR、dBASE II、TRANS86、XLT86、ACT86、SUPERCALC、CBASIC、MBASIC、MFORTRANなど、様々な言語に対応しています![…][28] [29]
  32. ^ウォーレン・ジュニア、ジム・C.(1982年7月)「ソーシム・サムシン」( PDF ) . Silicon Gulch Gazette . Rumors Mongered Here. 第7巻、第30号。米国カリフォルニア州ウッドサイド:コンピュータフェア。pp. 1, 2, 4, 6, 11, 14, 15 [11]。2021年11月30日時点のオリジナルからのアーカイブ。 2020年1月15日閲覧[…] SorcimはISAの買収を完了したばかりである。[…] また、8080から8086へのトランスレータであるTrans-86を1年以上運用している[…]
  33. ^ a b c d e Barry, Tim (1982-04-05). 「XLT-86, a CP/M utility program by Digital Research」 . InfoWorld – The Newsweekly for Microcomputer Users . Software Review. Vol. 4, no. 13. Popular Computing, Inc. pp.  40– 41, 53. ISSN 0199-6649 . 2020-02-01にオリジナルからアーカイブ。2020-01-25に取得。 [ …] XLT-86 1.1 […] XLT-86はPL/I-80で記述された解析的トランスレータプログラムです。8080ソースプログラム全体を読み取り、マシンコードにアセンブルし、レジスタ、メモリ、フラグの使用状況を解析して、最適化された8086アセンブリ言語プログラムを出力します。 […] VAX 11/750または11/780をお使いの方には、XLT-86 のバージョンもございます。このバージョンは、はるかに大規模なプログラムを変換できます。こちらも価格は 8,000 ドルです。[…] トランスレータは翻訳の一環としてラベルを追加し、ソースプログラムに等号を付けますが、元のコメントとプログラムラベルはすべてそのまま翻訳後のプログラムに渡されます。[…] プログラム翻訳は 5 段階のプロセスで進行します。まず、プログラムをスキャンしてアセンブルし、シンボル値と位置を生成します。次に、プログラム構造を分析し、基本ブロックに分解します。次に、基本ブロックを分析してプログラムフローとリソース使用量を決定します。最後に、ブロック構造レジスタ割り当てデータをユーザー向けのリストにまとめます。最後に、フロー情報とソースプログラムを使用して、8086ソースプログラムを生成します。[…] 
  34. ^ Kildall, Gary Arlen (1982-04-19). Swaine, Michael ; Freiberger, Paul ; Markoff, John Gregory (編). "Digital Researchの創設者がビジネス観を語る" . InfoWorld – The Newsweekly for Microcomputer Users . 特集:CP/M. 第4巻、第15号. Popular Computing, Inc. pp.  23– 24. ISSN 0199-6649 . 2020年2月1日時点のオリジナルよりアーカイブ。 2020年1月17日閲覧[…] Kildall: […] 1年半前、私はおそらく時間の75%をビジネスに、25%をプログラミングに費やしていました。当時取り組んでいた製品はXLT-86で、開発には9ヶ月かかりました。もし集中できていれば、それは3か月かかるプロジェクトになっていたでしょう。[…] 
  35. ^ Kildall, Gary Arlen (1982年6~7月). Bunnell, David Hugh ; Edlin, Jim (編). "Gary Kildall – The Man Who Created CP/M: CP/M's Creator – An Indepth PC-Exclusive Interview with Software Pioneer Gary Kildall" . PC Magazine . Operating Systems. Vol. 1, no. 3. Software Communications, Inc. pp.  32– 38, 40 [35] . 2020年1月17日閲覧. […] PC: 8080形式から8086形式へのプログラム変換には、どのような複雑な点がありますかKildall : ソースプログラムレベルでの直接的な変換は、ほぼ機械的に行うことができます。例えば、8080の「Add immediate 5」命令は、8086では「Add AL 5」になります。これはオペコード自体の非常に単純な変換です。機械的な変換の複雑さは、例えば次のような状況から生じます。8080 の命令 DAD H は HL レジスタの値を取り、それに DE を加算します。8086 では、同等の命令は ADD DX BX のようになりますが、これは特に問題はありません。DX レジスタは HL と同じで、BX は DE と同じだと言うだけで済みます。問題は、8086 の命令にはゼロフラグを設定する副作用があるのに対し、8080 の命令にはそれがないことです。機械的な変換では、フラグの保存、フラグの復元、シフトや回転などの処理が必要になります。これらにより、同じ意味効果を得るために 5 つか 6 つの余分な命令が追加されます。8080 コードには、8086 コードでは非常に奇妙なシーケンスを生成するシーケンスが多数あります。フラグレジスタなどの関係で、それらはうまくマッピングされません。私たちがソフトウェアを移行する方法は、XLT-86 と呼ばれるものです。これは発売されてから 6 か月ほど経っています。 PC: 「より良い」コードとは、サイズが小さくなるということですか? Kildall: 全てのオペコードをそのまま変換し、レジスタを節約してセマンティクスを維持する場合と比べて、20%小さくなります。 PC: 変換後のプログラムのサイズは、8080版と比べてどれくらい大きくなりますか? Kildall: 8080のプログラムを86の世界に移し、XLT-86変換を行うと、約10~20%大きくなります。16ビットマシンでは、すべての命令を処理するのがより困難で、オペコードが平均して少し大きくなります。興味深い現象として、16ビットの世界で劇的な速度向上が得られない理由の一つは、データバス上でより多くのオペコードが実行されるためです。[…]
  36. ^ Huitt, Robert; Eubanks, Gordon ; Rolander, Thomas "Tom" Alan ; Laws, David; Michel, Howard E.; Halla, Brian; Wharton, John Harrison ; Berg, Brian; Su, Weilian; Kildall, Scott ; Kampe, Bill (2014-04-25). Laws, David (ed.). "Legacy of Gary Kildall: The CP/M IEEE Milestone Dedication" (PDF) (ビデオ・トランスクリプション). Pacific Grove, California, USA: Computer History Museum . CHM Reference number: X7170.2014. Archived (PDF) from the original on 2014-12-27 . Retrieved 2020-01-19 . […] Rolander : 先ほど、 Garyは問題に建築家のようにアプローチするのが好きだったと述べました。[…] そして、彼はデータ構造の最も美しい図を描いていました。 […] そして、彼がそれを終え […] データ構造が正しいと確信すると、彼は信じられないほどの熱狂的なコーディングモードに突入しました。1日に20時間もコーディングに没頭することもありました […] その間、彼は完全に不在でした。何度か、何かを初めて動作させた時、それは真夜中になることもありました。ソフトウェアを書いたことがある人なら誰でも、例えば、画面に初めて表示されたら誰かに知らせなければならない、という経験をしたことがあるでしょう。妻のロリは、私が真夜中に何度か電話を受けたことがあると言ってくれるでしょう。LOGOやXLT 86の時もそうですが、彼が初めて動作させた時、誰かにそれを見てもらう必要がありました。ですから、何時であろうと、彼から電話がかかってくると、私は家に行って動作を確認せざるを得ませんでした。 […][30] [31](33ページ)
  37. ^ 「XLT86はアセンブリ言語プログラム変換の労力を削減します」(PDF)。Digital Research News – for Digital Research Users Everywhere。製品アップデート。第1巻第1号。米国カリフォルニア州パシフィックグローブ:Digital Research, Inc. 1981年11月。2ページ、7ページ。第4四半期。2021年11月10日にオリジナルからアーカイブ。 2020年1月18日閲覧[…] 8ビットから16ビットへのアセンブリコードトランスレータがDigital Researchから発売されました。XLT86と呼ばれるこのトランスレータは、 CP/Mソフトウェア製品を8080ベースのマイクロコンピュータから8086ベースのマイクロコンピュータに変換する時間のかかるプロセスを簡素化するように設計されています。XLT86は、Digital ResearchのASM、MAC、またはRMACアセンブラ形式と互換性のあるアセンブリ言語プログラムを変換するために使用できます。 XLT86プログラムトランスレータは、まず8080アセンブリ言語プログラムを読み取り、次にDigital Research ASM-86アセンブラが受け入れ可能な8086アセンブリ言語ステートメントを含む出力ファイルを生成します。1つの8080命令を最大10個の8086命令に変換する他の8086コードコンバータとは異なり、XLT86は広範なデータフロー解析を行い、元のプログラム全体のレジスタ使用状況を判断します。この解析によって収集された情報は、プログラム変換中に不要なフラグの保存および復元操作を排除するために使用されます。Digital ResearchマーケティンググループのCurt Geske氏は、「結果として得られる8086プログラムは、他のトランスレータで生成される同等のプログラムよりもシンプルでコンパクトです」と述べています。「さらに、XLT86により、OEM、エンドユーザー、ソフトウェアベンダーは、16ビット8086ベースコンピュータへの移行時に、変換作業を軽減することで、8080ベースのアセンブリ言語プログラムへの投資を保護できます。」 XLT86で変換されたプログラムは、CP/M-86MP/M-86の両方で動作します[…] XLT86はすぐに入手可能です。8ビットCP/MまたはMP/Mシステム、あるいはDigital Equipment CorporationのVAXシリーズミニコンピュータで使用するためのVMSオペレーティングシステムで動作します。CP/M版の価格は150ドル、VAX版は8,000ドルです[…]
  38. ^ Kildall, Gary Arlen (1973-10-01). 「グローバルプログラム最適化への統一アプローチ」(PDF) . Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages - POPL '73 . Boston, Massachusetts, USA. pp.  194– 206. doi : 10.1145/512927.512945 . hdl : 10945/42162 . S2CID 10219496 . 2017年6月29日時点のオリジナルよりアーカイブ(PDF) . 2006年11月20日閲覧. {{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク)
  39. ^ Kildall, Gary Arlen (1972年5月).コンパイル時のグローバル式最適化(博士論文). シアトル, ワシントン州, 米国:ワシントン大学, コンピュータサイエンスグループ. 論文番号: 20506, 技術報告書番号: 72-06-02.
  40. ^ a b XLT86 – 8080 to 8086 Assembly Language Translator – User's Guide (PDF) (初版). Pacific Grove, California, USA: Digital Research, Inc. 1981年9月. archive.org copy . 2016年11月18日時点のオリジナルよりアーカイブ( PDF) . 2016年11月18日閲覧
  41. ^ 「XLT86 for CP/M-80」 . Digital Research . 2020年1月16日時点のオリジナルよりアーカイブ2020年1月18日閲覧。(注: この ZIP アーカイブには、CP/M-80実行可能ファイル XLT86.COM [22 KB] と、2 つのオーバーレイ ファイル XLT00.OVL [8 KB] および XLT01.OVL [9 KB] が含まれています。)
  42. ^ Goldfarb, Ben (1982-12-09). 「Re: 8080 to 8086 translation」 .ニュースグループfa.info-cpm . 2020年2月1日時点のオリジナルからのアーカイブ。 2020年1月18日閲覧。 […] XLT86プログラムは、約30KBのメインメモリを占有します。CP /Mのベースメモリまでの残りのメモリには、変換対象の8086プログラムを表すプログラムグラフが格納されます[…] 64KBのCP/Mシステムは、最大約6KBの8080プログラムを変換できます[…][32] [33]
  43. ^ Wharton, John Harrison (1994-08-01). 「業界のパイオニア、ゲイリー・キルドール氏、52歳で死去:初のマイクロコンピュータ言語とディスクオペレーティングシステムを開発」 . Microprocessor Report . 8 (10). MicroDesign Resources Inc. (MDR). 2016年11月18日時点のオリジナルからのアーカイブ。 2016年11月18日閲覧。 […]皮肉なことに、ゲイリー氏が開拓した技術の多くが、10年後の今、再発見されています。AppleDECは、バイナリ再コンパイルを、既存のソフトウェアをPowerPCまたはAlphaアーキテクチャに移植するための「新しい」技術として宣伝しています。実際には、DRIは1980年代初頭に8080から8086へのバイナリ再コンパイラを導入していました。[…]
  44. ^ 「SPA賞受賞者:ゲイリー・A・キルドール博士:1995年SPA生涯功労賞受賞者」ソフトウェア出版社協会(SPA)。1995年3月13日。2019年12月21日時点のオリジナルよりアーカイブ。 2019年12月21日閲覧– www.digitalresearch.bizより。[…]キルドールは1976年にDigital Research, Inc. (DRI)を設立しました。同社は現在Novell傘下です。[…] 1980年代には、DRIはバイナリ再コンパイラを導入しました。[…]
  45. ^ Swaine, Michael (1997-04-01). 「ゲイリー・キルドールと共同起業家精神」 . Dr. Dobb's Journal . 2007-01-24にオリジナルからアーカイブ。2006-11-20に閲覧1995年3月、ソフトウェア出版社協会は、コンピュータ業界への貢献を称え、ゲイリーの死後表彰を行いました。協会は彼の功績を次のように列挙しています。[…] 1980年代、彼はDRIを通じてバイナリ再コンパイラを導入しました。[…]
  46. ^ a b c 2500 AD Software (1984年12月11日). 「スーパーアセンブラと世界最大のクロスアセンブラの品揃え」 . PC Magazine (広告). 第3巻第24号. 米国コロラド州エングルウッド: PC Communications Corp. pp.  166– 167. ISSN 0745-2500 . 2020年2月1日時点のオリジナルよりアーカイブ。 2020年1月24日閲覧[…] 8086/88アセンブラ(トランスレータ付き)$99.50 MSDOS、PCDOS、またはCP/M-86で利用可能 […] このパッケージには […] 8080から8086へのソースコードトランスレータ(変換するプログラムサイズに制限はありません)も含まれています […] Z-8000クロス開発パッケージ $199.50 […] この強力なパッケージには、Z-80/8080からZ-8000アセンブリ言語ソースコードトランスレータが含まれています […] これらのトランスレータは、Intel 8080またはZilog Z-80ソースコードからZ-8000ソースコードを生成します。これらのパッケージで使用されるZ-8000ソースコードは、Zilogニーモニックを使用した独自の2500AD構文で記述されており、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 で使用できます。)
  47. ^ 「Zilogモジュラー開発システムを発表」。Computerworld – The Newsweekly for the Computer Community。第13巻、第34号。米国カリフォルニア州クパチーノ:Computerworld, Inc.。 1979年8月20日。p. 46。ISSN 0010-48412020年2月1日時点のオリジナルよりアーカイブ2020年1月24日閲覧。[…] Zilog, Inc.は、 Z8Z80Z8000ベースのマイクロコンピュータ設計向けに、モジュール式で拡張可能な製品開発システム(PDS)シリーズを発表しました。 PDS 8000システムの4つのバージョン(モデル10、15、25、30)はすべて[…] 各システムの標準機能としてZ8000ソフトウェア開発パッケージが付属しており、これにはZDOSIIファイル管理ルーチン、PLZ/ASM高水準構造化アセンブラ、Z80/Z8000トランスレータ、Z8000 LおよびMACPマクロプロセッサが含まれています。[…] モデル10と25は、それぞれモデル15と30と同じ仕様ですが、モデル10と25にはZ8000開発モジュールは含まれていません。PDSモデル10の価格は10,485ドル、モデル15は11,995ドル、モデル25は20,000ドル、モデル35は21,500ドルです。4つのシステムはすべて、受注後30日以内に入手可能です。[…] 
  48. ^ Orlansky, Jesse編 (1979). Proceedings 27–29 November 1979 – 1st Interservice/Industry Training Equipment Conference . The Center. p. 413. Technical report NAVTRAEQUIPCEN. 2020年2月1日時点のオリジナルからのアーカイブ。 2020年1月24日閲覧[…] 表1. 16ビットマイクロプロセッサの特性 […] Zilog 8000 […] ソフトウェア […] Zilogは、PLZ、 BASICCOBOLFORTRANのトランスレータでZ8000をサポートする予定です。Z8000セットはZ80のスーパーセットであるため、これらのトランスレータによりZ80コードをZ8000コードに変換できます。[…]
  49. ^ PDS 8000開発システム – システム設計への統合アプローチ(製品概要). Zilog . 1980年1月. 2020年1月24日閲覧. […] Z8000トランスレータ:既存のZ80アセンブリ言語プログラムをZ8000コードおよびPLZ/ASMプログラム形式に迅速に変換する手段を提供します。 […][34] [35]
  50. ^ Thomas, Rebecca A.; Yates, Jean L. (1981-05-11). 「新しい16ビットプロセッサ向けの書籍、ボード、ソフトウェア」 . InfoWorld – マイクロコンピューティングコミュニティのための新聞. 第3巻、第9号 . Popular Computing, Inc. pp.  42– 43. ISSN 0199-6649 . 2020年2月1日時点のオリジナルからのアーカイブ。 2020年1月24日閲覧[…] Digital Researchは、 CP/MZ8000版の計画も発表している。開発ソフトウェアがさらに利用可能になった時点で、アプリケーションソフトウェアはZ8000に移行する予定である。Z80からZ8000への市販のトランスレータが必要である。[…] 
  51. ^ a b Guzis, Charles "Chuck" P. (2009-01-21) [2009-01-17]. "Re: CP/M or similar OS for 64K Z8002?" . Vintage Computer Forum . ジャンル: CP/M and MP/M. 2020-01-16オリジナルからのアーカイブ。2020-01-15 閲覧[…] ZilogAMCはどちらもZ80からZ8000への変換プログラムを提供していました。Intel 8080から8086へのトランスレータと同様に手動最適化しない限り、すぐにコードが肥大化しました。初期のMS-DOSコードの多くは、8080 CP/Mコードを自動変換して調整したものでした。例えば、PC用のSuperCalcの多くがそうだったことは知っています。DOS用のWordstarの初期バージョン(例えば3.3)もおそらくそうだったでしょう。 […] Z80からZ8000へのソースコード変換ツールは存在しましたが、そのプロセスは単純ではありませんでした(「厳密」モードと「緩和」モードがあり、時には1つのZ80命令から複数のZ8000命令に変換することもありました)。8086は8080に非常に近いですが、Z8000はZ80に非常に近いです。[…]
  52. ^ 「2500 AD Software 8080/Z-80 to Z8000 source code translator v2.06b」 2500 AD Software, Inc. 1982年。2020年2月1日時点のオリジナルよりアーカイブ。 2020年1月24日閲覧[36]
  53. ^ “802Z8000.ZIP 2500 AD Software 8080/Z-80からZ8000へのソースコードトランスレータv2.06e” 2500 AD Software, Inc. 2020年2月1日時点のオリジナルよりアーカイブ2020年1月24日閲覧。[37]
  54. ^ a b Bodrato, Stefano (2008-10-30). 「to86.awk ソースコード」 . GitHub . 1.6. 2022年1月5日時点のオリジナルよりアーカイブ。 2022年1月5日閲覧
  55. ^ Callahan, Brian (2021年10月23日) [2021年7月6日、2021年6月6日]. 「Intel 8080 CP/M 2.2からIntel 8086/8088 MS-DOSアセンブリ言語トランスレータ」 . 8088ify 1.2. 2022年3月31日時点のオリジナルよりアーカイブ。 2021年11月28日閲覧[38] [39] [40] [41]
  56. ^ 「JSにコンパイルできる言語のリスト」 . GitHub . 2020年1月23日時点のオリジナルよりアーカイブ2018年3月11日閲覧。
  57. ^ theolivenbaum (2021年11月13日). 「h5 🚀 - C#からJavaScriptへのコンパイラ」 . GitHub . 2021年11月14日閲覧
  58. ^ “J2ObjC” . 2019年10月22日時点のオリジナルよりアーカイブ2019年10月22日閲覧。
  59. ^ “JSweet” . 2019年12月14日時点のオリジナルよりアーカイブ2019年12月14日閲覧。
  60. ^ "Maia" . 2020年5月13日閲覧。
  61. ^ 「Swiftify」
  62. ^ 「C->Go トランスレータ」 . GitHub . 2018年12月7日時点のオリジナルよりアーカイブ2018年1月11日閲覧。
  63. ^ “Go 1.5 リリースノート” . 2020年2月1日時点のオリジナルよりアーカイブ2018年1月11日閲覧。
  64. ^ Cox, Russ. 「Go 1.3+ コンパイラのオーバーホール」2020年1月9日時点のオリジナルよりアーカイブ2018年1月11日閲覧。
  65. ^ a b「C2Rustリポジトリ」 . GitHub . 2022年4月15日.
  66. ^ 「概要」 . Js_of_ocaml - リファレンスマニュアル. Ocsigen. 2018年12月8日時点のオリジナルよりアーカイブ。 2014年10月8日閲覧
  67. ^ J2Eif 研究ページ – ソフトウェア工学講座. Se.inf.ethz.ch. 2011. pp.  20– 35. doi : 10.1007/978-3-642-21952-8_4 . ISBN 978-3-642-21952-8. 2020年1月1日時点のオリジナルよりアーカイブ2014年7月8日閲覧。
  68. ^ 「C2Eif Research Page – Chair of Software Engineering」 Se.inf.ethz.ch. 2020年1月1日時点のオリジナルよりアーカイブ2014年7月8日閲覧。
  69. ^ "Skip" . 2024年5月18日時点のオリジナルよりアーカイブ2024年5月17日閲覧。
  70. ^ 「Swiftify Objective-CからSwiftへのコンバーター」 。 2017年11月14日閲覧
  71. ^ 「Runtime Converter」2019年7月10日時点のオリジナルよりアーカイブ2017年11月14日閲覧。
  72. ^ワールド・ワイド・ウェブ・コンソーシアム (W3C). 「XSL 変換 (XSLT) バージョン 2.0」. https://www.w3.org/TR/xslt-20/

さらに読む