0

たとえば、32ビットマイクロプロセッサアーキテクチャについて読んでいます。簡単な質問があります。浮動小数点数の最大ビット数が32ビットの場合、その数はどのようにしてマイクロプロセッサに入力されて処理されるのでしょうか。機械語の指導の一部として使用できますか?答えが「はい」の場合、機械語命令全体を構成する必要はありません(つまり、32ビットすべてが数値自体に使用されるため、制御ビットやオペコードなどの余地はありません。 )。それが実際に行われている方法です。つまり、「CPUに注意してください。次に読み取る機械語コマンドは実際にはコマンドではなく、実際には数値です」という機械語コマンドがあります。

または、代わりに、コンピューターに送られるすべての「データ」は、機械語の指示の一部としてではなく、別々に入力する必要がありますか?

特に、Intelマイクロプロセッサがこの問題をどのように処理するかを知りたいです。

4

3 に答える 3

0

多くの場合、機械語の指示は複数の単語で構成されます。したがって、1つのワードは命令であり、次の1つまたは複数のワードは、即時データ(レジスタに配置する値、または操作するメモリアドレス)に関連付けられます。これは、Intelx86関連のアーキテクチャなどのCISCプロセッサでの動作です。

しかし、あなたは何かに取り組んでいます。RISCアーキテクチャでは、各命令が正確に1ワードであるのが一般的です。この場合、32ビット値をロードするには、2つの命令が必要です。つまり、必要に応じて、ビット数の少ない値をロードする1ワード命令と、残りのビットをロードする別の1ワード命令があります。多くの場合、2番目の命令は必要ありません。「小さい」値は、24ビットのままである可​​能性があります。これは、プログラムコードのほとんどの数値に十分です。

于 2013-01-28T07:27:01.703 に答える
0

CPU 上のすべてのデータは、中央バスまたは他のチャネルを介して移動します。データはメモリまたはキャッシュのいずれかに保存されますが、キャッシュにはあまり余裕がありません。inc eax を使用するとします。inc 自体は RAM から取得した情報です。問題は、上記のような CPU 内コマンドがあり、EAX がインクリメントされることです。次に、外部データを必要とするコマンドがあります。これらのコマンドの場合、命令の一部はアドレスそのものです。後の Intel CPU では、命令自体にオペランドを追加することができます。命令内のアドレスは、必要なデータへのポインターか、必要なデータのポインターへのポインターのいずれかです。

つまり、CPU は命令を探します。最初に起動するのが命令でない場合、CPU はそれを数値として扱い、すべてを台無しにします。

例: 8 ビットの CPU があるとします。CPU にロードされるメモリ内の最初のものは命令である必要があるため、01001010 を取得するとします。次にオペコードは 01 (add または we)、次に命令です。アキュムレータのアドレス001010にいることを追加することです

くそー、私はこれを説明するのが苦手です

于 2013-01-28T07:18:39.097 に答える
0

私のアセンブリは少し錆びていますが、覚えているのは、命令用の特定のレジスタとデータ用の特定のレジスタがあることです。したがって、文字通り次のデータ項目を関連レジスタに移動し、目的の命令を AX(?) レジスタに押し込みます。

しかし、注意してください - 私が最後にアセンブリを書いたのは 2004 年にさかのぼります....

于 2013-01-23T09:35:02.207 に答える