ここから本文です

回答受付中の質問

知恵コレに追加する

コンピュータの演算問題ですが。。。 知ってる方お願いします。。 本当に意味がよ...

tkdduq81さん

コンピュータの演算問題ですが。。。
知ってる方お願いします。。
本当に意味がよくわかりません
ぜひおねがいします

C=A+B(AとBを加算しCに代入する)という演算を、コンピュータで実行することを考える。


1.加算命令に対し、オペランドが2個しか許されていないアーキテクチャ
2.加算命令に対し、オペランドが1個しか許されていないアーキテクチャ
3.加算命令に対し、オペランドが0個の(つまり1個も許されていない)アーキテクチ

ではそれぞれどのように加算C=A+Bを実行するか、1-3のそれぞれの実行手順を述べよ。

ほんとうにおねがいします

  • アバター

違反報告

この質問に回答する

回答

1件中11件)

 

joseph_joey_tribbianiさん

こんなのどかな? 仮想的なアセンブリ言語で書いてみたよぉ。

オペランドが2個
........... Add A, B ← A と B の和 を もとめて、レジスターに保存
........... Store C ← レジスターの値を C に保存

オペランドが1個
........... Load A ← A の値を レジスター に 読み込む
........... AddIn B ← レジスターに B の値を 足し込む
........... Store C ← レジスターの値を C に保存

オペランドが0個
Begin: Load_1 A ← A の値を レジスター1 に 読み込む
........... Load_2 B ← B の値を レジスター2 に 読み込む
........... Increment_1 ← レジスター1 の値を 1 増やす
........... Decrement_2 ← レジスター2 の値 を 1 減らす
........... GotoUnlessZero_2 Begin ← レジスター2 の値が 0 じゃなければ Begin に跳ぶ
........... Store_1 C ← レジスター1 の値を C に保存

この場合、加算命令に相当するのは Increment 命令だよぉ。

──────────────────────────────
"高級アセンブラ" と揶揄もされる C言語 でも書いたよ。少しは分かりやすいかなぁ。

オペランドが2個
........... Register = A + B ;
........... C = Register ;

オペランドが1個
........... Register = A ;
........... Register += B ;
........... C = Register ;

オペランドが0個
Begin: Register_1 = A ;
........... Register_2 = B ;
........... ++Register_1 ;
........... --Register_2 ;
........... if ( ! Register_2 ) goto Begin ;
........... C = Register_1 ;


joseph_joey_tribbiani

  • アバター
  • 違反報告
  • 編集日時:2009/1/11 23:48:57
  • 回答日時:2009/1/11 01:23:21

この質問に回答する