2007年07月06日

H17 情報 第10問

IV-10
仮想計算機で用いられるスタックマシンが次の命令を有するとする。
  push a スタックにデータaをプッシュする。
  dup スタックの最上部のデータを複製してスタックにプッシュする。
  exch スタックの最上部の2つのデータの位置を交換する。
  add スタックから2つのデータをポップし,その和をスタックにプッシュする。
  sub スタックから2つのデータをポップし,その差をスタックにプッシュする。
(スタック最上部2番目のデータから最上部のデータを引く。)
  mul スタックから2つのデータをポップし,その積をスタックにプッシュする。

このとき,次のように記述されたプログラムが最終的にスタックに残す結果は,どの式を処理したものと同じか。
  push a
  push b
  sub
  dup
  push 1
  add
  exch
  push 2
  sub
  mul

@ (a-b+2)*1
A (a-b+1)*(a-b-2)
B (a-b-1)*(-2)
C (a-b+2)*(a-b-1)
D (a-b)*(1-2)


解答:A

各命令の後のスタックは以下の通り。

命令スタック
push aa  
push bab 
suba-b  
dupa-ba-b 
push 1a-ba-b1
adda-ba-b+1 
excha-b+1a-b 
push 2a-b+1a-b2
suba-b+1a-b-2 
mul(a-b+1)*(a-b-2)  

posted by noumea at 15:03| 東京 ☀| Comment(0) | TrackBack(0) | 技術士過去問 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。