これはよくある質問です。しかし、私は心の中で異なる角度を持っています。ここで明確にしようとします。
私が知っていることから、CPUが実行するすべての命令は機械語であり、CPUができることはすべて、ALUとそのトランジスタのおかげで何らかの算術演算を行うことです(ハードウェアレベルの場合)。
ただし、これは理解するよりも入力する方が簡単です。すべてのCPUが加算、減算などを行うのであれば、これらの算術演算で実行されるプログラム、たとえば、印刷Hello WorldというJAVAプログラムはどうでしょうか。
つまり、このプログラムは、CPUに追加するだけのものにどのように変換されるのでしょうか。
PSこの質問がこのウェブサイトに当てはまらない場合は、おpoび申し上げます。
- - -二部 - - -
はい。これに迅速かつ熱意を持って答えてくれたすべての人に感謝します。質問に少し手を加えて、すべての回答にコメントしてからもう一度質問するよりも良いと思いました。
ここにあります。
まず、全員がHello Worldの例について具体的に回答しています。これは私のせいだ。私はこれをジェネリックのままにしておくべきでした。Hello worldの例では、出力デバイスと、その処理がCPUだけに限定されるわけではないことを疑問視しています。
また、多くの人がCPUが単なる追加以上のことを行うことに気付きました。私はそれに同意します。私はただそれを書いておらず、ずっとそれを想定していました。私が理解していることから、これはプロセスです:
メモリから命令を読み取る(データおよびアドレスバスとプログラムカウンタースタッフを使用)
- CPU内のレジスタにデータを保存する
- ALUはもちろん、命令をデコードした後、算術演算を行うか、ifのような命令の場合はジャンプします
- そして、出力デバイスなどのように、必要に応じて他のリソースと通信します。これ以上のプロセスは今のところ簡単です。
CPUが命令をデコードし、算術演算を実行することを決定するステップ3で(ここでは、現在の命令をジャンプするなど、他に実行すべき演算がないと仮定しています。 )ここで私の視覚化が終了します。プログラムからの命令がCPUの単なる算術演算である方法。それはその算術演算を行い、その命令はその目的を果たします。
今回は明確にしたいと思います。
PSここでは、ALUはプログラムで行う実際の算術演算に限定されず、バイナリ形式のすべての命令を実行するなど、それらを意味する結果を得るために加算または減算することで大きな仮定を取っています得た。ここで間違っている場合は、以下の回答が私の質問に正しく答えています。