- ベストアンサー
CPUの認識について間違っている所があれば訂正をお
- CPUは高級言語やアセンブリ言語、機械語を読むことができるが、電圧のオンとオフを0と1として認識することはできる
- pythonをCPUに読み込ませるには、コンパイルしてアセンブリ言語に変換し、それをアセンブルして2進数の0と1に変換する必要がある
- CPUの認識する電圧は、0Vが0、5Vが1、10Vが2、15Vが3のように決まっており、他の電圧は認識できない
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>0Vが0 >5Vが1 >10Vが2 >15Vが3 >のようにCPUに認識させることはできない デジタル計算は基本的に二値(0か1か)だけです。 そのような発想をされること自体、「デジタル処理」の本質を理解されていないことになります。 CPUの計算部分は全て論理回路で構成されています。 https://pyming.info/2021/07/24/ronri_kairo/ 論理回路は0か1かしか判断要素として使いませんので、仮に「10Vを2」として入力するようなシステムがあったとしても、内部でそれを2進数の「10」に分解するための処理回路が別途必要になります。 そんな無駄なことをして回路面積を大きくする理由がありません。 CPUの内部は全て0か1かの二値で判断される論理回路で構成されている、ということを理解されるよう、論理回路について勉強されることをお勧めします。 以上、ご参考まで。
その他の回答 (4)
- Ultra-Hetare
- ベストアンサー率38% (204/526)
ついでだから申し上げますが、 貴殿はCPUの動作とプログラムの関係を 深堀して知りたいという質問を連発しているように 見受けられます。 それはここで質問しても永遠に回答は得られないでしょう。 下記を実行するのが近道です。(それでも物凄く遠い道のりだと思います) ・cpuの作り方を読む(これは本当にcpuを作るのではなく シーケンサを作っていますが、考え方は参考になるでしょう) ・OSの作り方を読む(これも本当に実用レベルのOSを作るのではなく 作者が言うように「ハリボテ」のOSを作り、本の目的はC言語の習得です) ・CPUの仕様書を取り寄せて読破する。 ・OSのコードを全部読破して、ハードウェアアクセスの部分を アセンブラレベルで理解する。(gcc -S -gなどで確認できます) その上で、世界に何人居るか知りませんが、 CPUの達人のメーリングリストを探し当てて、 そこで、上記書籍で解決できなかったことを質問すれば、 良い回答が返ってくるかも知れません。 健闘を祈ります。
お礼
ありがとうございます
- Ultra-Hetare
- ベストアンサー率38% (204/526)
off/on ≒ ビットが立っている/立っていない ≠ 電圧が0かどうか。 です。 詳しくはないですが、off/onはメモリに記録され、 結果のみがcpuに転送されるのではないかと思います。 ※わざわざ電圧を伝える必要はない。 そもそも貴殿は高級言語を勉強しているように見えますので、 電圧云々の知識は余技であり、拘泥することではありません。
お礼
ありがとうございます
- takncom
- ベストアンサー率16% (15/91)
間違い指摘です。 電圧が0Vは、無いです。電圧が低いのを0と認識してるだけです。 CPUが読むというのですが、基本は0と1ですが、 その0と1がたくさんあればいろんな数値を読むことが出来ると言えます。 例えば、0と1しかなければ 0が×で1が丸と判断させてたのが それが2つあれば 00 01 10 11 と4種類の内容を判断することが出来るようになります。 そして、それを機械語としています。 CPUは、機械語しか読めませんので、高級言語など全て機械語に翻訳(あえて翻訳と言ってます)したものを読んで実行してるわけです。 翻訳するのにコンパイラとかあります。 ないやつは、自動的に翻訳しながら実行するとかですね。
お礼
>電圧が0Vは、無いです。電圧が低いのを0と認識してるだけです。 onとoffというのをよく見かけるんですが、offというのは0ボルトじゃないんですか?
- t_ohta
- ベストアンサー率38% (5238/13705)
> CPUは高級言語python等は読めない > CPUはアセンブリ言語も読めない 直接理解することはできません。 > CPUは16進数の機械語は読めない 16進数は人間が見やすいようにしているだけ。 表示上の問題であって、メモリに保存されているのは2進数(電気のOn/Off) > CPUは0と1つまり電圧が0Vと?Vを0と1と認識して読むことができる。 CPUが物理的に認識しているのは電気のOn/Offです。 > pythonをcpuに読み込ませるためには、コンパイルしてアセンブリ言語に変換して > アセンブリ言語に変換されたpythonの言語をさらにアセンブルして2進数の0と1 > つまり電圧0Vと?Vに変換してCPUがPythonを読み込めるようになる Pythonはインタープリタ型の言語なのでコンパイルされる事はありませんので厳密には違いますが、コンパイル型の言語の場合は各言語仕様に基づいて書かれたプログラムをコンパイルすることでマシン語に変換されてCPUが認識できるモノになります。 途中にアセンブラを挟むことはありません。 > 0Vが0 > 5Vが1 > 10Vが2 > 15Vが3 > のようにCPUに認識させることはできない、あくまでも0Vと?Vオンとオフだけ 4値とか8値を認識できるバスを持っているCPUもあります。
お礼
ありがとうございます >4値とか8値を認識できるバスを持っているCPUもありま す。 なんというCPUですか? >コンパイル型の言語の場合は各言語仕様に基づいて書かれたプログラムをコンパイルすることでマシン語に変換されてCPUが認識できるモノになります。 >途中にアセンブラを挟むことはありません 例えばJava?をコンパイルすると一気に2進数の機械語に変換するという意味でしょうか?
お礼
ありがとうございます