将表达式转换为通用寄存器操作模型

用户9

我想获得一些帮助,以将该表达式转换为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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理器是否使用多个堆栈来将调用堆栈与表达式/寄存器堆栈分开?

来自分类Dev

vim将正则表达式组的所有匹配项都放入寄存器

来自分类Dev

具有固定/预分配寄存器的表达式的代码生成

来自分类Dev

在Vim的表达式寄存器中使用粘贴缓冲区中的值

来自分类Dev

如何使用表模型将for循环转换为lambda表达式

来自分类Dev

Lambda语句仅出现Roslyn编译器错误:无法将表达式转换为表达式树

来自分类Dev

我可以将rsp用作通用寄存器吗?

来自分类Dev

将操作替换为Z3表达式

来自分类Dev

将Lambda表达式转换为函数指针

来自分类Dev

Linq:无法将方法转换为商店表达式

来自分类Dev

将Linq表达式转换为SQL Server查询

来自分类Dev

正则表达式将<div>转换为<br>

来自分类Dev

无法将表达式类型转换为返回类型

来自分类Dev

将SqlDataReader转换为linq表达式

来自分类Dev

将Scala表达式转换为Java 1.8

来自分类Dev

将Unicode代码点转换为字符的表达式

来自分类Dev

将Ruby正则表达式转换为JavaScript

来自分类Dev

将Perl正则表达式转换为python

来自分类Dev

将表达式转换为Expression <Func <T,bool >>

来自分类Dev

将NFA转换为正则表达式

来自分类Dev

将foreach转换为linq表达式

来自分类Dev

TypeError:无法将表达式转换为浮点型

来自分类Dev

将正则表达式模式转换为小写

来自分类Dev

将volatile表达式的结果强制转换为void

来自分类Dev

无法将表达式的类型“()”转换为类型“ UINavigationController?”

来自分类Dev

将xpath表达式结果转换为json

来自分类Dev

将PCRE转换为POSIX正则表达式

来自分类Dev

将正则表达式从Java转换为.Net

来自分类Dev

将规则表达式转换为DFA

Related 相关文章

热门标签

归档