回答受付が終了しました

ID非公開

2021/6/14 17:19

77回答

コンパイラも一つのプログラムですが

回答(7件)

0

最初のコンパイラってのは、 当時のアセンブリ言語でソースコードを作り、当時のアセンブラでアセンブルして最初のコンパイラ実行ファイルを作ったの 使えるプログラムとしては、アセンブラ(と機械語)はあったんだから 以後は、使えるプログラムにコンパイラが加わったので 今更アセンブラでコンパイラを作るなんて面倒な事はしない

0

>アセンブラすらなければハンドアセンブルするしかありません。 オレの時代はごく普通の作業だった。 ハンドアセンブルでまずはアセンブラを作る→アセンブルソースを「手書き」して、インストラクションコード表を見てニーモニックを「手書き」で変換する。 そのアセンブリ言語で高級言語を作る。 いったん高級言語が出来れば、言語の仕様を拡充したり、別の言語を作る。 その繰り返しでどんどんいろいろな言語を作れる。 >コンパイルの無限連鎖になってしまう気がします これは、現在から過去へ遡る連鎖の話ではなく、未来へ向かっての話だよ。

ID非公開

質問者2021/6/15 11:11

手書きのコンパイルは分かるのですが 初めはどこから 自動のコンパイルになったのですか? いつどこで手動→自動になったかわかりません

0

コンパイラは機械語で書くか、「他の言語のコンパイラ」によって作成されます。 C言語の場合はちょっと特殊で、原始のコンパイラは機械語で書かれました。その後、ある程度コンパイラが完成した時点で「C言語」で書き直され、コンパイルし直されました。そして、最終的には標準関数を含め、ほぼすべてがC言語で書かれることとなります。 後発のCコンパイラは、先に完成していたCコンパイラによってコンパイルされ、完成した暁には「自分自身」でコンパイルし直すことになります。

ID非公開

質問者2021/6/14 22:15

コンパイラが完成するまでって、 少しずつ機械語を足しながら編集しながら、作っていくのですか?

0

歴史的に言うと、機械語→アセンブリ言語→C言語(等の高級言語)です。 クロスコンパイラもありますから、最近のCPUのコンパイラはC言語とかで作って他のプラットフォームでクロスコンパイルして~っていう形でしょうね。 Intel4004とかの頃であれば、アセンブラはマシン語(ハンドアセンブル)で作ったんじゃないかと思います。 #アセンブリ言語はマシン語に直接変換できるのでハンドアセンブルもそのくらいの頃は普通に行われていました 以降のプロセッサについては、前世代のCPUを使ってアセンブラを作って、(C言語など高級言語が実装されてからは)コンパイラをアセンブラやクロスコンパイルで作って…でしょうかね。

0

もちろんです。コンパイラのソースコードはありますし実行するにはコンパイルが必要です。無限連鎖にはなりません。最初に機械語で書いてくれた人がいるので。そこから派生したりして広がって来ました。

ID非公開

質問者2021/6/14 18:01

どこかのタイミングで、 アセンブリ言語そのものでコンパイルできるということですか?