将表达式转换为通用寄存器操作模型
convert expression into general register operation Models
我想得到一些帮助,将这个表达式转换成 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 种方法看起来都不错。
can I use negative numbers (-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
by accumulator 版本看起来像这样,仅使用 sub
和正数:
load y
mult 2
store temp
load x
add 2
mult 3
sub temp
store z
我想得到一些帮助,将这个表达式转换成 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 种方法看起来都不错。
can I use negative numbers (-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
by accumulator 版本看起来像这样,仅使用 sub
和正数:
load y
mult 2
store temp
load x
add 2
mult 3
sub temp
store z