ソース間トランスレータ、ソース間コンパイラ(S2S コンパイラ)、トランスコンパイラ、またはトランスパイラ[ 1 ] [ 2 ] [ 3 ]は、プログラミング言語で書かれたプログラムのソースコードを入力として受け取り、同じまたは異なるプログラミング言語で同等のソースコードを、通常は中間表現として生成するタイプのトランスレータです。ソース間トランスレータは、ほぼ同じレベルの抽象度で動作するプログラミング言語間で変換を行いますが、従来のコンパイラは、高レベル言語から低レベル言語に変換します。たとえば、ソース間トランスレータは、 PythonからJavaScriptへのプログラムの変換を実行する場合がありますが、従来のコンパイラは、 Cのような言語からアセンブリ、またはJavaからバイトコードに変換します。[ 4 ]自動並列化コンパイラは、多くの場合、高レベル言語プログラムを入力として受け取り、コードを変換して、並列コード注釈(たとえばOpenMP)または言語構造(たとえばFortranのステートメント)で注釈を付けます。[ 2 ] [ 5 ]forall
ソース間コンパイルのもう一つの目的は、既存のコードを、下位互換性を損なう次世代のプログラミング言語やアプリケーションプログラミングインターフェース(API )に対応させることです。これにより、コードの自動リファクタリングが実行されます。これは、リファクタリング対象のプログラムが元の開発者の制御下にない場合(例えば、Python 2からPython 3への変換、または古いAPIから新しいAPIへの変換など)、あるいはプログラムの規模が大きすぎて手動でのリファクタリングが非現実的または時間のかかる場合に役立ちます。
トランスコンパイラは、元のソースコードの開発とデバッグを容易にするために、翻訳されたコード構造をできるだけ元のソースコードに近づける場合もあれば、翻訳されたコードが元のソースコードと似ていないほど元のコードの構造を大きく変更する場合もあります。[ 6 ]また、トランスコンパイルされたソースコードを元のコードにマッピングするデバッグユーティリティもあります。たとえば、JavaScript Source Map 標準では、JavaScript コードがたとえばミニファイされたり、JavaScript にトランスコンパイルされた言語によって生成されたりした場合に、 Web ブラウザーによって実行される JavaScript コードを元のソースにマッピングすることができます。[ 7 ]
例としては、 Closure Compiler、CoffeeScript、Dart、Haxe、Opal、TypeScript、Emscriptenなどが挙げられる。[ 8 ]
いわゆるアセンブリ言語トランスレータは、あるアセンブリ言語のコードを別のアセンブリ言語に変換するソース間トランスレータの一種であり、異なるプロセッサファミリやシステムプラットフォーム間での変換も含まれます(ただし、これらに限定されません)。
Intel は、16 ビット プロセッサ8086を8 ビット プロセッサ8080とソースコード互換性があると宣伝しました。 [ 9 ]これをサポートするため、Intel は 1978 年以来 OEM 顧客向けに、8080から 8086 ソース コードへの ISIS-II ベースのトランスレータ CONV86 [ 10 ] [ 11 ] [ 12 ] [ 13 ] (CONV-86 [ 14 ]および CONVERT 86 [ 15 ] [ 16 ]とも呼ばれる) を用意しており、おそらくこの種のプログラムとしては最も初期のものと思われます。[ nb 1 ]これは複数のレベルの変換をサポートし、8 インチフロッピー ドライブを備えたIntel Microprocessor Development System MDS-800上で 2 MHz で動作しました。ユーザーの報告によると、あまり信頼性が高くなかったようです。[ 17 ] [ 18 ]
Seattle Computer Products (SCP) は、 1980 年にTim Patersonが86-DOS を開発中に書いたTRANS86.COM [ 16 ] [ 19 ] [ 20 ]を提供しました。[ 21 ] [ 22 ] [ 23 ]このユーティリティは、Intel 8080 およびZilog Z80アセンブリ ソース コード (Zilog/ Mostekニーモニック付き) をIntel 8086 用の.ASMソース コード (SCP のクロス アセンブラASM86 for CP/M-80とのみ互換性のある形式) に変換することができましたが、サポートしていたオペ コード、レジスタ、モードはごく一部に限られており、その後も多くの場合、かなりの手動修正と再作業が必要でした。[ 24 ] [ 21 ]また、単なる音訳のみを実行するため、[ 15 ] [ 19 ] [ 10 ] [ 11 ]総当たりのシングルパス翻訳器は、レジスタとジャンプの最適化を一切実行しませんでした。[ 25 ] [ 26 ]約 24 KB の RAM を消費しました。[ 16 ] TRANS86.COM の SCP バージョン 1 は、Z80 ベースのシステムで動作しました。[ 16 ] [ 19 ] 86-DOS が動作するようになると、パターソンは自己ホスティングに触発されたアプローチで、TRANS86 を利用して 86-DOS で動作するプログラムに変換しました。[ 23 ] [ 19 ]バージョン 2 と番号付けされたこのプログラムは、代わりに TRANS.COM と名付けられました。[ 19 ] [ 26 ] [ 25 ] [ 27 ] [ 28 ] 1982年後半には、翻訳ツールはマイクロソフトからも入手可能になったようです。[ 16 ] [ 29 ]
TRANS86 とも呼ばれるSorcim は、1980 年 12 月以降、8080 から 8086 へのトランスレータも提供していました。 [ 30 ] [ 15 ] SCP のプログラムと同様に、CP/M-80 アプリケーション コード (ASM、MAC、RMAC、または ACT80 アセンブリ形式) をMS-DOS (ACT86 と互換性のある形式)に移植するように設計されていました。 [ 30 ] [ 16 ] [ 31 ] [ 32 ] ACT80 形式では、いくつかの Z80 ニーモニックもサポートしていました。変換は命令単位で行われ、条件付きジャンプにはいくつかの最適化が適用されました。このプログラムは、CP/M-80、MP/M-80、およびCromemco DOS上で、最小 24 KB の RAM で実行され、ソース ファイル サイズに制限はありませんでした。[ 16 ] [ 33 ]
はるかに洗練されており、ソース変換プロセスに最適化コンパイラ技術を初めて導入したのは、1981 年 9 月にリリースされたDigital Researchの XLT86 1.0 でした。XLT86 1.1 は 1982 年 4 月までに利用可能になりました。[ 34 ]このプログラムはGary Kildall [ 15 ] [ 35 ] [ 36 ] [ 37 ]によって作成され、 Intel 8080 プロセッサ用の.ASMソース コード (ASM、MAC、または RMAC アセンブラと互換性のある形式) を8086 用の.A86ソース コード (ASM86 と互換性あり) に変換しました。 8080 レジスタの使用に関するグローバル データ フロー分析を使用して、 [ 38 ] [ 15 ] [ 39 ] [ 40 ] 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で記述されました。[ 41 ] [ 16 ] [ 34 ] [ 42 ]プログラム自体に 30 KB の RAM を占有し、プログラム グラフ用に追加のメモリが必要でした。 64 KB メモリ システムでは、サポートされる最大ソース ファイル サイズは約 6 KB であったため、[ 41 ] [ 16 ] [ 43 ] [ 34 ]より大きなファイルは、変換前にそれに応じて分割する必要がありました。[ 16 ] [ 34 ]また、XLT86 はDEC VAX/VMSでも利用可能でした。[ 16 ] [ 34 ] XLT86 の入出力はソース コード レベルで動作しましたが、トランスレータのメモリ内プログラムの表現と適用されたコード最適化技術により、バイナリ再コンパイルの基礎が築かれました。[ 44 ] [ 45 ] [ 46 ]
2500 AD Softwareは、Z80を搭載したCP/M-80マシン、 Zilog ZEUS、およびOlivetti PCOS システム向けに、XASMスイートの一部として8080から8086へのソースコード変換ツールを提供した。[ 47 ]
1979 年以来、Zilog は PDS 8000 開発システムの一部としてZ80 からZ8000へのトランスレータを提供していました。 [ 48 ] [ 49 ] [ 50 ] [ 51 ] [ 52 ] [ 18 ] Advanced Micro Computers (AMC) [ 52 ] [ 18 ]と 2500 AD Software も Z80 から Z8000 へのトランスレータを提供していました。[ 47 ]後者は TRANS [ 53 ] [ 54 ]と呼ばれ、Z80 CP/M、CP/M-86、MS-DOS、PCOS で利用可能でした。[ 47 ]
Z88DK開発キットには、2008年にStefano Bodratoによって書かれた、nasmをターゲットとするZ80からi486へのソースコード変換ツール「to86.awk」が付属している。 [ 55 ]これは、2003年にDouglas Beattie, Jr.によって書かれた8080からZ80へのコンバータ「toz80.awk」に基づいている。[ 55 ]
2021年、ブライアン・キャラハンは、 nasmをターゲットとした8080 CP/M 2.2からMS-DOSへのソースコード変換ツールである8088ifyを作成した。[ 56 ]
一部のプログラミング言語の最初の実装はトランスコンパイラとして始まり、それらの言語の一部ではデフォルトの実装が今でもトランスコンパイラです。以下の表に加えて、CoffeeScript のメンテナは JavaScript にコンパイルされる言語のリストを提供しています。[ 57 ]
開発者が既存のコードベースの大部分を維持したまま別の言語に切り替えたい場合、ソフトウェア全体を手作業で書き直すよりもトランスコンパイラを使用する方が良い場合があります。トランスコンパイラの品質によっては、コードが正しく動作するために手動での調整が必要な場合とそうでない場合があります。これは、出力ソースコードが常に修正なしで動作することを仕様で要求する「トランスコンパイル言語」とは異なります。コードベースの移植に使用されるすべてのトランスコンパイラは、可読性やプラットフォームの慣例性に関して最高のコード品質を達成する必要がある場合、出力ソースコードの手動調整を想定しています。
トランスコンパイラパイプラインとは、再帰的なトランスコンパイルによって生成されるものです。複数の技術レイヤーを連結し、各レイヤー間にトランスコンパイルのステップを設けることで、技術を繰り返し変換し、分散型の言語非依存仕様を効果的に作成できます。
XSLTは、さまざまなテクノロジー間で使用できる汎用変換ツールであり、このような派生コードパイプラインを作成するために使用できます。[ 73 ]
再帰的トランスコンパイル(または再帰的トランスパイル)とは、トランスコンパイルの概念を再帰的に適用し、ある技術を別の技術に繰り返し変換する変換パイプライン(多くの場合、単一の真の情報源から始まる)を作成するプロセスである。
このプロセスを繰り返すことで、A → B → C → D → E → F という経路を経て、再びA(v2)に戻すことができます。このパイプラインを通して、A → A(v2)という経路でいくつかの情報が保持され、その情報(抽象的なレベルで)は、各構成要素 A~F が何について合意しているかを示します。
トランスコンパイラパイプラインが生成する各バージョンにおいて、その情報は保持されます。情報は様々な形やサイズをとる可能性がありますが、上記のパイプラインで6回トランスコンパイルされた後、 A(v2)に戻ってくる頃には、元の状態に戻っています。
A–F–A(v2)の各フォーマットを経由した変換後も残るこの情報は、(定義上)派生コンテンツまたは派生コードである。
再帰的トランスコンパイルは、トランスコンパイラが翻訳後のコードを元のソースコードにできるだけ近づけて開発やデバッグを容易にするか、あるいは元のコードの構造を大きく変更して翻訳後のコードが元のソースコードとは全く異なるものになるかのどちらかを選択できるという事実を利用します。また、トランスコンパイルされたソースコードを元のコードにマッピングするデバッグユーティリティも存在します。例えば、JavaScriptソースマップを使用すると、Webブラウザで実行されるJavaScriptコードを、JavaScript言語にトランスコンパイルされた元のソースコードにマッピングできます。
[…] Achtung
C
- および
Basic -
プログラマー! […] B→C TRANSPILER は ARC の Umwandlungs-Software-System から提供されています […] B→C TRANSPILER は
AMIGA
から提供されており、C コードを使用したコンパイラの基本プログラムです。 […] 基本プログラムの C コードを完全に理解できるようになります。 […] Basic-Befehle werden erweitert transpiliert。 (
HAM-Modus
、
IFF
、 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 […]
トランスパイラ
という名称は、
トランスピュータ
と
コンパイラ
の組み合わせを示唆することを意図しており、
トランスピュータが
トランジスタ
と
コンピュータ
(つまり、コンポーネントでもあるコンピュータ)
から造語されたの
と同様である。[…]
(注: Occamトランスパイラという用語は、通常のOccamプログラムを入力として受け取り、リンク・トゥ・チャネル割り当てなどを追加した新しいOccamソースコードを出力として生成するプリプロセッサとして機能するソース間コンパイラの同義語として使用されています。これにより、トランスピュータのネットワーク上で可能な限り効率的に並列処理を実行できるようになります。)
[…] 1992-03-31 に出願された英国出願番号 1495953 に基づき、米国特許法第 44 条 (D) 項に基づき優先権を主張。登録番号 A1495953、1992-03-31 付、1999-03-31 失効。コンピュータ ソフトウェアおよびプログラム (米国特許法第 38 条) について。初出使用日:1991年8月1日、商取引開始日:1991年8月1日。(注:この会社は、 DEC VMS用の BASIC から C へのトランスパイラである VX/BASIC などの製品を開発しています。彼らの主張にもかかわらず、トランスパイラという用語を公に使用したのは彼らが初めてではありません。例えば、 1988 年に ARC が開発したAmiga用のBASIC から C へのトランスパイラや、 1989 年にConcurrent Technology Systems (CTS) が開発したOccam Transpiler を参照してください。)
[…]
8086は、
アセンブリ言語レベルでは
8080
とソフトウェア互換性があります。 […]
…] Intelの翻訳プログラムは、8080アセンブラプログラムを8086アセンブラプログラムに変換することができた […]
8086
および
8088
で使用できるソフトウェア開発ツールを補完します。 […] CONV-86 は、
8080
/
8085
アセンブリ言語ソース モジュールを ASM-86 ソース モジュールに変換するために必要な変換作業のほとんどを実行できます
。 […] 8080A/8085A アセンブリ言語プログラムを iSBC 86/12A ボードで実行できるように変換を容易にするために、CONV-86 は
ISIS-II
オペレーティングシステムで使用できます。
[…] 「ターゲットのマイクロプロセッサの特異な特性を考慮した翻訳スキームがない限り、自動翻訳が機能する方法はありません」と、
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
の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 命令がないため、条件の意味が変更され、短い条件付き JMP が実行されて、無条件の CALL または RET をスキップします。[…] セグメント レジスタにより、コード領域とデータ領域を分離できます。[…] XLT86 は式を調べ、特定の命令に適したセグメントを決定します。 […](13ページ)
[…] オリジナルの
8086
アセンブラは、
8080
を搭載したMDS-80開発システムで動作しました。最初の製品の1つは、8080から8086へのソースレベルトランスレータでした。変換速度が驚くほど遅かったことを覚えています。 […] 営業担当者が、地元の営業所で変換と検証テストを実行することを申し出ました […] 私たちは […]そこで
ISIS-II
MDS 200シリーズの作業を開始しました。ハードディスクもありましたが、これはMDSにとって非常に高価なオプションでした […] 私たちが夜帰るときもまだ処理中でした。翌朝になってもまだ終わっていなかった。[…] 約2週間後、
インテルの
ソフトウェア担当者が翻訳ツールを検証した後、エドが翻訳済みのプログラムを持って戻ってきた。元の
8085
版よりもサイズが約50%大きくなっており、これはインテルの翻訳ツールに関する主張とはやや矛盾していた。[…]
[…]
Intel は、
8080
から8086へのコード
変換を行う ISIS ホストのトランスレータを持っていました。私は、8080 の基本的な
BCD浮動小数点パッケージであるサンプル
8080
コードを持って地元の Intel 営業所で非常にイライラする一日を過ごし
、トランスレータが作業を終えるまで何時間も待って、がっかりして帰宅したことを覚えています。約 1 週間後、ようやくバグが解決したので、変換されたプログラムを受け取れるという電話を受けました。そのプログラムは、オブジェクトバイト数で言えば元のプログラムの1.5倍以上の大きさだった。当時、インテルが8086コードは8080コードよりもはるかにコンパクトだと主張していたが、私はその主張に少し懐疑的だった。しかも、実際にテストしてみると、そのプログラムはまともに動作しなかった。[…]
CP/M用の80から86へのトランスレータは他にもあった。Sorcim
が
一つ持っていた
のを覚えている。AMC
も
Z80
から
Z8000
へのトランスレータを持っていた
。[…] [インテルの]トランスレータにはいくつかのレベルの変換があった。[…] 詳細な操作を保持する「リテラル」変換もあった。[…] それは
ISIS-II
で、MDS-800上で動作し、確か
2MHzで8インチフロッピーディスクを使用していた。[…]
[…]
ティム・パターソン[…]
SCP
在籍中に作成した
8086
アセンブラについて、彼は次のように述べています
。「私が最初に作成した8086アセンブラは
Z80
アセンブリ言語で、
CP/M
上で動作していました。SCPの8086 CPUカードにASM86として同梱されていたと思います。また、Z80ソースコードを非効率的ではあるものの動作可能な8086ソースコードに変換するトランスレータも作成しました(
インテルは
このアイデアを
変換表を公開し
て推進しました)。これはTRANS86と呼ばれ、CP/M用にZ80アセンブリ言語で作成されました。DOSが動作するようになった後、このトランスレータをASM86(およびトランスレータ自体)に適用して、DOS上で動作する8086バージョンを作成しました。変更履歴は手元にありませんが […]、バージョン2以上が変換版(DOS版)だったと思います。履歴にバージョン番号が2未満と記載されている場合は、CP/M版です。」 […]
[…]
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コンピュータのオペレーティングシステムになると考えていた。[…]
…] 1.
CP/M形式で書かれた
Z80
ソース コード ファイルを読み込み、
86-DOS
形式に変換します。2. トランスレータ プログラムが Z80 ソース コードを
8086
ソース コードに変換します。3.
常駐アセンブラが、変換された 8086 ソース コードを 8086
オブジェクト コード
にアセンブルします。4. 軽微な手動修正と最適化。 (最近翻訳した19KBのZ80プログラムの修正には約4時間かかりました。最適化なしでも、元のプログラムの2倍の速度で動作しました! […])
[…] 主要なソフトウェア開発者に製品を
8080
/
Z80から
8086
に移植してもらうには、できるだけ簡単にする必要があると判断しました。私はすでにZ80から8086へのソースコード変換ツール(8080と
CP/M
上で動作)
を作成していました。
私の計画では、8080 CP/Mプログラムをトランスレータを通して実行するだけで、ソフトウェア開発者がプログラムを8086に移植するために必要な作業は完了するはずでした。つまり、アプリケーションがオペレーティングシステムのサービスを要求するために使用するインターフェースは、
変換ルール
を適用した後、CP/Mのものと全く同じになるはずでした。[…]
[…]
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に同梱されていました。しかし、このプロセスを利用した人は他に誰もいなかったと思います。[…]
[…]
Seattle Computer Products の
Z80
to
8086 Translator は
、CP/M
上で Z80 上で動作します。入力として
Zilog
/
Mostek
ニーモニックを使用して記述された Z80 ソース ファイルを受け取り
、それを当社の 8086 Cross Assembler で受け入れられる形式の 8086 ソース ファイルに変換します。ファイルを変換するには、TRANS86 <ファイル名>.<拡張子> と入力するだけです。元の拡張子に関係なく、出力ファイルは <ファイル名>.A86 という名前になり、入力ファイルと同じドライブに表示されます。 TRNTEST.Z80というファイルがトランスレータの動作を示すために同梱されています。Z80アセンブリ言語全体が翻訳されるわけではありません。[…]
[…] ソースコードトランスレータは、ほとんどの
Z80
ソースコードを、わずかな手動修正の後、アセンブラで使用可能な
8086
ソースコードに変換できます。これにより、プロセッサ間でプログラムを比較的迅速かつ簡単に転送できます。 […] TRANS ファイル […] このコマンドで呼び出される Z80-to-8086 ソースコードトランスレータは、アセンブラマニュアルの巻末に記載されている Z80 上で動作するバージョンと基本的に同じです。唯一の違いは次のとおりです。1. トランスレータの名前は TRANS であり、TRANS86 ではありません。また、8086 上で
86-DOS上で動作し、Z80 上で
CP/M
上で動作しません
。2. 出力ファイルの拡張子は「ASM」であり、「A86」ではありません。 […]
MS-DOS
の標準機能です。8080
または
Z80コード
を 8086
ソース
コードに
変換するプログラム
、リンカ、ライブラリ ランタイムが強力なアセンブラと組み合わさって、プログラマが PC の 16 ビット プロセッサを最大限に活用するために必要なすべてを提供します。 MS-DOS変換プログラムを使用すると、
CP/M-80
または
SB-80
(8ビットオペレーティングシステム)で開発されたコードを
MS-DOS 1.2
または
2.0
に変換できます。16ビットシステムでプログラムを実行するには、単純な変換以上の修正が必要になる場合があるため、このツールは主に技術的な訓練を受けたユーザーが使用することをお勧めします。
[…] 先週は、半年に一度の
カリフォルニア・コンピュータ・スワップ・ミート
でした。このイベントは、John Craig […]
Sorcim […] が主催しています。 […] ショーで新製品を発表していました […] 彼らのもう一つの製品は TRANS-86 です。TRANS-86 は、
CP/M
互換の
8080
/
8085
/
Z-80
ソースコードファイルを
受け取り、
8086
コードに変換します。その後、ACT-86 を使用して新しいファイルをアセンブルできます。 […]
[…] なぜ?柔軟性。CompuPro
の
85/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を使用)、16進ファイルをリンクし(CP/M 80のLOADコマンドを使用)、IBM PCに変換し(G&GのCPM-IBMプログラムを使用)、IBM PCで実行するだけです!この手順にはMS-DOSは必要ありません! […] なぜ?柔軟性です。CompuPro
の
85/88 CPUはCP/M 80および86、またはMS-DOSで動作します。WORDSTAR、dBASE II、TRANS86、XLT86、ACT86、SUPERCALC、CBASIC、MBASIC、MFORTRANなど、多数のソフトウェアを提供しています! […]
[…] SorcimはISAの買収を完了したばかりです。 […] また、8080から8086へのトランスレータであるTrans-86を1年以上稼働させています […]
PL/I-80
で書かれた分析トランスレータ プログラムです。8080 ソース プログラム全体を読み込み、マシン コードにアセンブルし、レジスタ、メモリ、フラグの使用状況を分析して、最適化された
8086
アセンブリ言語プログラム
を生成します。 […]
VAX 11/750
または
11/780
をご利用の方のために、XLT-86のバージョンも用意されています
。このバージョンでは、より大規模なプログラムを変換できます。価格は8000ドルです。 […] トランスレータは、変換処理の一環としてラベルを追加し、ソースプログラムと等価化しますが、元のコメントとプログラムラベルはすべてそのまま変換後のプログラムに引き継がれます。 […] プログラムの変換は5つのステップで行われます。まず、プログラムをスキャンしてアセンブルし、シンボル値と位置を生成します。次に、プログラム構造を分析し、
基本ブロック
に分解します。3番目に、基本ブロックを分析して、
プログラムの流れ
とリソースの使用状況を決定します。4番目に、
ブロック構造
と
レジスタ割り当てデータをユーザー向けのリストにまとめます。5番目に、フロー情報とソースプログラムを使用して、
8086
ソースプログラムを生成します
。 […]
[…] キルダル: […] 1 年半前は、おそらく時間の 75% をビジネスに、25% をプログラミングに費やしていました。当時取り組んでいた製品 XLT-86 は、完成までに 9 か月かかりました。集中できていれば 3 か月で完成するプロジェクトだったでしょう。 […]
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ビットの世界で速度が劇的に向上しない理由の1つは、データバス上でより多くのオペコードを実行しているためです。 […]
[…]
Rolander : 先ほど、
Gary は
問題をアーキテクトとして扱うのが好きだったと述べました
。 […] そして、彼は自分のデータ構造の最も美しい図を描きました。 […] そして、それを終えて […] データ構造が正しいと確信すると、彼は信じられないほどの狂気的なコーディングモードに入りました。1日に20時間も作業を続けることもありました […] その時間帯は、彼は完全に没頭していました。何度か、真夜中に初めて何かを動作させたことがありました。ソフトウェアを書いたことがある人なら誰でも経験があると思いますが、例えば、初めて画面に表示されたら、誰かに知らせなければなりません。妻のロリも、真夜中に何度か電話がかかってきたことを話してくれるでしょう。LOGO
も
XLT
86もそうでしたが、彼が初めて動作させたとき、誰かに見てもらう必要があったのです。ですから、何時であろうと関係なく、彼は私に電話をかけ、私は彼の家に行って動作を確認しなければなりませんでした。 […]
(33ページ)
Digital Research
から 8 ビットから 16 ビットのアセンブリ コード トランスレータが利用可能になりました。XLT86 と呼ばれるこのトランスレータは、
CP/M
ソフトウェア製品を
8080 ベースのマイクロコンピュータから
8086
ベースのマイクロコンピュータに
変換する時間のかかるプロセスを軽減するように設計されています。XLT86
は、Digital Research の ASM、MAC、または RMAC アセンブラ フォーマットと互換性のあるアセンブリ言語プログラムの変換に使用できます。 XLT86プログラムトランスレータは、まず8080アセンブリ言語プログラムを読み込み、次にDigital Research社のASM-86アセンブラで使用可能な8086アセンブリ言語ステートメントを含む出力ファイルを生成します。他の8086コードコンバータは、1つの8080命令を最大10個の8086命令に変換しますが、XLT86は広範な
データフロー解析を
実行して、元のプログラム全体のレジスタ使用状況を判断します。この解析で収集された情報は、プログラム変換中に不要なフラグの保存および復元操作を排除するために使用されます。Digital Research社のマーケティンググループのCurt Geske氏によると、「結果として得られる8086プログラムは、他のトランスレータで生成される同等のプログラムよりもシンプルでコンパクトです。さらに、XLT86を使用することで、OEM、エンドユーザー、ソフトウェアベンダーは、16ビット8086ベースのコンピュータに移行する際に、8080ベースのアセンブリ言語プログラムへの投資を無駄にすることなく、変換作業を削減できます。」 XLT86で翻訳されたプログラムは、
CP/M-86
と
MP/M-86
の両方で動作します。[…] XLT86は即日入手可能です。8ビットのCP/Mまたは
MP/M
システム、あるいは
Digital Equipment Corporationの
VAX
シリーズ
ミニコンピュータで使用するための
VMS
オペレーティングシステム上で動作します
。CP/M版の価格は150
ドル
、VAX版は8,000ドルです。[…]
{{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)…] XLT86 プログラムは、メインメモリの約 30K バイトを占有します。残りのメモリ、
CP/M
のベースまでには、変換対象の 8086 プログラムを表す
プログラム グラフ
が格納されます。 […] 64K CP/M システムでは、
最大約 6K までの
8080プログラムの変換が可能です。 […]
ゲイリー
が開拓した多くの技術が
、10年後の今、再発見されている。Apple
と
DECは
、既存のソフトウェアを
PowerPC
または
Alpha
アーキテクチャに移植するための「新しい」技術として
バイナリ再コンパイルを
宣伝している。実際には、DRIは
1980年代初頭に
8080
から
8086
へのバイナリ再コンパイラを発表していた。 […]
[…]
キルダルは1976年に
Digital Research, Inc.
(DRI)を設立した
。DRIは現在
Novell
の一部となっている。 […] 1980年代に、DRIは
バイナリ再コンパイラ
を導入した。 […]
1995年3月、
ソフトウェア出版社協会は、
ゲイリーの
コンピュータ業界への貢献を称え、死後表彰を行った
。協会は彼の功績の一部を列挙した。[…] 1980年代、彼は
DRIを通じて
バイナリ・リコンパイラ
を導入した
。[…]
[…] 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で利用可能。)
[…]
Zilog, Inc.は、
Z8
、
Z80
、
Z8000
ベースのマイクロコンピュータ設計向けのモジュール式で拡張可能な製品開発システム(PDS)シリーズを発表し
ました。 PDS 8000システムの4つのバージョン(モデル10、15、25、30)すべてに共通する特徴として、
ZDOSII
ファイル管理ルーチン、PLZ/ASM高水準構造化アセンブラ、Z80/Z8000トランスレータ、Z8000 LおよびMACPマクロプロセッサを含むZ8000ソフトウェア開発パッケージが標準装備されています。[…] モデル10と25は、それぞれモデル15と30と同じ仕様ですが、Z8000開発モジュールは含まれていません。PDSモデル10の価格は10,485ドル、モデル15は11,995ドル、モデル25は20,000ドル、モデル35は21,500ドルです。4つのシステムすべては、注文受付後30日で納品可能です。[…]
[…] 表 1. 16 ビット マイクロプロセッサの特性 […]
Zilog 8000 […] ソフトウェア […] Zilog は、PLZ、
BASIC
、
COBOL
、
FORTRAN
用のトランスレータで
Z8000 を
サポートする予定です。Z8000 セットは Z80 の上位互換であるため、これらのトランスレータにより
Z80
コードを Z8000 コードに
変換できます。 […]
Z80アセンブリ言語プログラムを
Z8000
コードおよびPLZ/ASMプログラム形式
に
迅速に変換する手段を提供します。[…]
[…]
Digital Research は、
CP/Mの
Z8000
版
の計画も発表した
。アプリケーション ソフトウェアは、より多くの開発ソフトウェアが利用可能になった時点で Z8000 に移行される予定である。Z80 から Z8000 への市販のトランスレータが
必要
である。 […]
[…] Zilog と
AMC の両方が
Z80
から
Z8000
への変換プログラムを提供していました
。 Intel
8080
から
8086への変換と同様に、結果を手動で最適化しない限り、すぐに肥大化しました。初期の MS-DOS コードの多くは、自動変換され、調整された 8080 CP/M コードでした。たとえば、PC 用の
SuperCalc
の多くがそうであったことは知っています
。DOS 用の Wordstar の初期バージョン (たとえば 3.3) もおそらくそうでした。 […] Z80からZ8000へのソースコード変換ツールは存在したが、それは単純なプロセスではなかった(「厳密」モードと「緩和」モードがあり、場合によっては1つのZ80命令を複数のZ8000命令に変換する必要があった)。8086は、Z8000がZ80に近いというよりも、8080にずっと近い。[…]
…] Pasmo はZ80クロス アセンブラであり、 […] 次の形式でオブジェクト コードを生成できます: raw バイナリ、Intel HEX 、 CP/M Plus RSX用 PRL 、Plus3Dos ( Spectrum +3ディスク)、TAP、TZX および CDT (Spectrum およびAmstrad CPCエミュレータ テープ イメージ)、AmsDos (Amstrad CPC ディスク)、およびMSX (Basic のディスクからの BLOAD で使用するため)。バージョン 0.5.0 以降では、 […] Z80 ソースから8086コードをMs-dos COMファイル用のバイナリ フォーマットまたはCP/M 86 CMDフォーマットで生成することもできます。 […]
[…] 代わりに、BASICやCなどの高水準言語で書かれたプログラムを実行します(Pascalコンパイラと8088からZ8000へのトランスレータが開発中です)。 […]およびCiarcia, Steve (1984年6月) 「切り札 – パート2:ソフトウェア – TBASICおよびCコンパイラとアセンブラ」(PDF) BYTE –小型システムジャーナルCiarcia's Circuit Cellar. Vol. 9, no. 6. McGraw-Hill, Inc. pp. 115–122 . ISSN 0360-5280 . 2020年1月29日取得。
[…] Z80からZ8000、および8088からZ8000への変換のためのオブジェクトコードトランスレータが間もなく利用可能になると予想しています […]Ciarcia , Steve (1990). "Trump Card – Part 1: Hardware – Speed up your IBM PC with 16-bit coprocessing power & Part 2: Software – TBASIC and C compilers and an assemble" . In Gonneau, Daniel; Bernardi, Fred; Ausburn, Richard (eds.). Ciarcia's Circuit Cellar . Vol. 7. McGraw-Hill Publishing Company . pp. 138–152 , 153–160 . ISBNも入手可能。 0-07-010969-92020年2月1日にオリジナルからアーカイブされました。2020年1月29日に取得。