我想获得一些帮助,以将该表达式转换为4种方法的命令:
z=3*(x+2)-2*y
这是我尝试的方法:
按堆栈:
push 2
push -1
mult
push y
mult
push x
push 2
add
push 3
mult
add
pop z
通过累加器:
load y
mult -2
store temp
load x
add 2
mult 3
add temp
store z
寄存器内存:
add R1, x, 2
mult R1, R1, 3
mult R2, y, -2
add z, R1, R2
注册-注册:
load R1, x
add R1, R1, 2
mult R1, R1, 3
load R2, y
mult R2, R2, -2
add R1, R1, R2
store z, R1
可以吗 我可以使用负数(-2 ...)吗?
谢谢!
addz, R1, R2
您不是要写:add z, R1, R2
吗?
除此之外,这4种方法看起来还可以。
我可以使用负数(-2 ...)吗?
这在很大程度上取决于诸如neg
或的命令的可用性sub
。
如果sub
可能,观察差异:
push 2 \
push y | = 2*y
mult /
push x \
push 2 |
add | = 3*(x+2)
push 3 |
mult /
sub <-- Does depend on the order of the previous pushes!
pop z
在通过蓄能器的版本是这样的使用sub
只和正数:
load y
mult 2
store temp
load x
add 2
mult 3
sub temp
store z
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句