[解決済み] 最初のコンパイラはどのように書かれたのですか?
2022-04-16 04:48:33
質問
鶏と卵、ブートストラップについて聞いたのですが。いくつか質問があります。
何かをバイナリ命令に変換する最初のコンパイラは、何を書いたのでしょうか?
アセンブリはコンパイルされているのか、それともバイナリ命令に変換されているのか?
...バイナリでコンパイラを書いたとは考えにくいですね。
解決方法は?
アセンブリ命令は、(一般に)オペコードに直接マッピングされます。オペコードは、プロセッサが直接解釈できる機械コードの(マルチ)バイト値です。オペコードを表(たとえば 6039マイクロプロセッサはこちら 例えば、アセンブリ命令と一緒にリストアップされたものを、ジャンプなどのためにメモリのアドレスやオフセットを手で決定するのです。
最初のプログラムは、まさにこの方法で作られたのです。
しかし、ほとんどの場合、アセンブラを使ってアセンブリコードをコンパイルする方が簡単です。アセンブリコードは自動的にオペコードの検索を行い、名前付きジャンプラベルのアドレスやオフセットなどを計算するのにも便利です。
最初のアセンブラは手書きでした。そのアセンブラを使って、さらに複雑なアセンブラを組み立て、そのアセンブラを使って、さらに高度な言語用のコンパイラを組み立てる、というように。このように、次のツールの作成を簡単にするために、繰り返しツールを書いていくプロセスを、David Rabinowitzは次のように呼んでいます(彼の回答で言及されています)。 ブートストラップ .
関連
-
[解決済み] ダブルリンクとは何ですか?
-
[解決済み] どなたか「-1.#QNAN」の意味を説明してください。
-
[解決済み] コンパイルとトランスパイルの比較
-
[解決済み] clang(およびLLVM)とgcc / g++の違いは何ですか?
-
[解決済み] コンパイラの書き方を学ぶ【終了しました
-
[解決済み] アプリケーション・バイナリ・インターフェース(ABI)とは何ですか?
-
[解決済み] JIT(ジャストインタイム)コンパイラとは、どのようなものですか?
-
[解決済み】独自の言語でコンパイラを書く
-
[解決済み] 最初のコンパイラはどのように書かれたのですか?
-
[解決済み] C#コンパイラはどのようにCOM型を検出するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ダブルリンクとは何ですか?
-
[解決済み] どなたか「-1.#QNAN」の意味を説明してください。
-
[解決済み] コンパイルとトランスパイルの比較
-
[解決済み] clang(およびLLVM)とgcc / g++の違いは何ですか?
-
[解決済み] ブートストラップとは何ですか?
-
[解決済み] コンパイラの書き方を学ぶ【終了しました
-
[解決済み] アプリケーション・バイナリ・インターフェース(ABI)とは何ですか?
-
[解決済み】独自の言語でコンパイラを書く
-
[解決済み] 最初のコンパイラはどのように書かれたのですか?
-
[解決済み] 誰かが新しいプログラミング言語を書くとき、彼らはそれを何で書くのだろう?