次の一連の3アドレス命令で得られる結果 x を表す式はどれか。
ここで、3アドレス命令では、三つのオペランドを用いた命令“c = a op b”を“op (a, b, c)”として表記する。
op は一つの演算子を表し、結果 x を表す式においては優先度の高い順に *. /, +. - とする。
/(c, d, w1)
+(b, w1, w2)
/(e, f, w3)
-(w3, g, w4)
*(w2, w4, x)
ア | b + c / d * e / f - g |
イ | b + c / d * (e / f - g) |
ウ | (b + c / d) * e / f - g |
エ | (b + c / d) * (e / f - g) |
答え エ
【解説】
一連のオペランドを書き換えて、w1、w2、w3、w4の代入を行う。
/(c, d, w1) … w1 = c / d … (1)
+(b, w1, w2) … w2 = b + w1 … (2)
/(e, f, w3) … w3 = e / f … (3)
-(w3, g, w4) … w4 = w3 - g … (4)
*(w2, w4, x) … x = w2 * w4 … (5)
(2)のw1に(1)を代入して
w2 = b + c / d … (6)
(4)のw3に(3)を代入して
w4 = e / f - g … (7)
(5)のw2とw4に(6)(7)を代入して
x = (b + c / d) * (e / f - g)
(エ)になる。
【キーワード】
・命令語
・オペランド