CPUを構成するプログラムレイヤーに関して。
c>アセンブリ>マシンコード>マイクロコード>回路
ファームウェアはどこにありますか?マシンコードですか?すべてのプログラムをマシンコードにコンパイルする必要がありますか、それともアセンブリで停止できますか?
CPUを構成するプログラム層に関して。
あなたの用語にはいくつかの混乱があります。CPU (「中央処理装置」) はプロセッサであり、マシン命令を表す値が与えられ、レジスタとメモリを変更する結果の操作を実行する複雑な回路です。プログラミング層で構成されていません。
c > アセンブリ > マシンコード > マイクロコード > 回路
これは正確で有効な階層ではありません。C で書かれたプログラムは、コンパイラによって下位の形式に変換されます。その下位形式はアセンブリ言語の場合もありますが、ダイレクト バイナリ マシン コードの場合もあれば、Java の JVM などの仮想マシン レイヤーのコードの場合もあります。アセンブリ言語は、命令、レジスタ、およびメモリ位置に記号名が付けられているマシン コードに近い表現です。それらはアセンブラによってバイナリコードに変換されますが、プロセスはコンパイラよりもはるかに単純で直接的です。マイクロコードは、機械語の低レベル形式です。マシンコードは通常、マイクロコードに変換されませんが、マシンコードのインタープリター (CPU) 自体が、低レベルのマイクロコード プロセッサによって実行されるマイクロコードで記述/実装されたプログラムである可能性があります。
ファームウェアはどこに落ちますか? マシンコードですか?
ファームウェアは、ROM または EPROM に常駐するか、または回路に直接実装される、固定 (「ファーム」) 形式のマシン コード/マイクロコードです。これはソフトウェアの形式ですが、(容易に) 変更可能なメモリに存在しないという点で際立っています。ハードウェアはプログラムを表さない回路、メモリ、バスなどであるため、概念的にハードウェアとは区別されます。
すべてのプログラムをマシンコードにコンパイルする必要がありますか? それともアセンブリで停止できますか?
前述のように、アセンブリ言語は機械語の記号表現です。CPU で直接処理することはできません。機械語に翻訳する必要があります。
もちろん、これらすべての用語と問題の詳細については、ウィキペディアやその他のインターネット ソース、およびプログラミングの入門書を参照してください。
ファームウェアは、通常、ハードウェアの一部のストレージ内に配置され、そのハードウェアを機能させるマシン コードです。つまり、ファームウェアは通常、低レベル言語 (C またはアセンブリ) で記述され、マシン コードにコンパイルおよびアセンブルされ、このストレージ上の既知の位置に配置されます。既知の場所に移動し、そのマシン コードの実行を開始します。
「ファームウェア」と呼ぶものによって異なります。組み込みシステムのソフトウェアを参照する場合、それはプログラム (たとえば C で記述) であり、マシン コードにコンパイルされます。場合によっては、「ファームウェア」がマイクロコードを指すこともあります。
アセンブリ レベルで停止することはできません。マシン (実または仮想) にはマシン コードが必要です。
ただし、すべてのプログラムがコンパイルされるわけではありません。ソース コードを直接実行するインタープリターがあります。
CPUへのファームウェアw / rはマイクロコードです。
機械語は、アセンブリがモデル化するものです。