- ベストアンサー
C言語をCPUに読み込ませるためには、 C言語か
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Cのソースファイルを対象引数にして、gccやclangを叩くと「Build」が走ります。 「Build」はプリプロセッサ・コンパイラ・アセンブラ・リンカを順次起動して、 ソースを実行可能ファイルに変換します。 ※この実行ファイルを叩くと機械語命令がCPUにロードされます。 普通のプログラマが意識する必要はありません。 貴殿がコンパイラを作ろうと思っているなら、 これらのメカニズムの実質を習得しないといけないでしょう。
その他の回答 (2)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
ごめん^^間違ってないかも^^ C言語をコンパイルした結果が、アセンブリ言語 って言いたかっただけなんですが。 >C言語からアセンブリ言語にコンパイルして、 これでも、意味としては同じですね^^ ちょっと、グダグダでごめん!
お礼
ありがとうございます
- AsarKingChang
- ベストアンサー率46% (3467/7474)
ちょっと違います。 >C言語からアセンブリ言語にコンパイルして、 C言語を「コンパイル」して、内部的にアセンブラになりますが。 この工程は意図的にソース出力をしない限りは Object:オブジェクトファイルという中間形式になり、 それをLink:リンクすることで、実行ファイルになります。 通常WindowsやMS-DOSなどでは、COMやEXEファイルという 拡張子のファイル。 C言語で作ったものは、基本的にはOSがないと 読み込めないのですが、読み込んだデータ自体は 確かにC言語を「コンパイルしたプログラムである」 のですが、 C言語のソースをそのままでも、コンパイルしてでも CPUが読んでいるというより、OSによって CPU内のメモリに配置されているというニュアンスの方が 適切かもしれません。 その後、CPUのインストラクションポインター(次に実行する命令の位置)をそこにあわせると実行開始!という感じに。 なぜなら、COMファイルやEXEファイルを読み込んでくれる 母体=OSがないとこれらを読み込むことすらできない為です。 「なんで?」そのファイルは、「ファイル」なので、 CPUではなくDISKにいます。それをDISKからCPUに転送 しているのは、別のプログラム=OSだからです。 ただし、ROM化用コンパイラというものもあり、 通常のコンパイラーと、少しだけ違い、 直接OSや、IPLを経由せずROMに 書いて実行できるケースもあります。 この場合は、ファイルではなく、ROMに直接焼き付ける為 ファイル名がBINなどになるのですが、 一般の人はそこを触ることはほぼないと思います。 一般人が使っているのは、OS内のローダーが COMやEXEファイルを、読み込んでくれて、 実行準備をしてくれた後、実行していた!。 と、思ってよいかと。
お礼
ありがとうございます
お礼
ありがとうございます