8

最近、デジタル ロジックのコースを受講し、AND、OR、およびその他のさまざまな種類のロジックについて学びました。プログラミングに不可欠なifステートメントについては取り上げませんでしたが、ステートメントがどのように機能するかについてかなり興味をそそられました。

私の最善の推測では、それは単に 2:1 マルチプレクサーであり、さらにelseステートメントを追加すると 4:1 および 8:1 になりますが、このような単純な概念には少し複雑すぎるようです。

ifステートメントが実際に何に変換されるか知っている人はいますか?

4

7 に答える 7

1

コンピューター アーキテクチャのクラスを受講してからしばらく経ちました。

コンピューターが実行するすべての命令は命令メモリから取得されます。実行する命令のアドレスを表す数字があると思います。

典型的な命令には複数のセクションがあります.1つはコマンドコード用で、通常は最大2つのソースレジスタ、宛先レジスタ、および4年以上考えていなかったその他のもののセクションです。

とにかく、コマンドコードの1つは通常条件付きジャンプであり、データパスが通常のRAMで値を保存/取得する方法を理解できれば、そのロジックを拡張して命令アドレスを変更することはそれほど難しくないはずです別のリテラル値/レジスタ値が 0 に等しいかどうかに基づいて、リテラル値、または特定のレジスタに格納されている値

ここに画像の説明を入力

于 2013-06-24T19:01:08.430 に答える
1

プログラムは個々の命令として実行され、(少なくとも最も単純なケースでは) 命令は順次実行されることを忘れています。

したがって、命令がレジスタにif (a + 4 > 5)ロードされ、別の命令が を加算し、別の命令が合計を と比較します。次に、命令は比較から「条件コード」をテストし、直後の命令を実行する (「本体」を実行する) か、数 (または数十) 命令離れたメモリ内の場所に「ジャンプ」します (「本体」をスキップします)。 」)。a45ifif

そこにはデジタル ロジックがありますが、個々の命令の実行方法を決定する下位レベルにあります。

于 2013-06-24T18:55:45.547 に答える
1

適切なifステートメントは、トランジスタ ロジックよりも少し高いレベルのものに変換されます。ifステートメントは通常、条件分岐 (最適化がないと仮定) として実装され、プログラム カウンターを既定値だけインクリメントするか、条件が true または false (通常は 1 または 0) に評価されたかどうかに基づいて、分岐で指定された値に設定します。

于 2013-06-24T18:55:52.763 に答える