[ad_1]
我必须计算给定的表达式
F= (A+B)^2*CA
在 0,1,2,3 地址机器上。
我需要 0 地址机器的帮助,其他机器的代码是否正确?
我尝试过的:
0 address machine Need help ?????? 1 address machine LOAD A ADD B STORE TEMP MUL TEMP MUL C SUB A STORE F 2 address machine MOVE F, A ADD F, B MUL F, F MUL F, C SUB F, A 3 address machine ADD F, A, B MUL F, F, F MUL F, F, C SUB F, F, A
解决方案1
虽然我们非常愿意帮助那些陷入困境的人,但这并不意味着我们会为您做这一切! 我们无法完成所有的工作,您要么为此获得报酬,要么这是您成绩的一部分,我们为您做这一切是不公平的。
所以我们需要你来做这项工作,当你遇到困难时我们会帮助你。 这并不意味着我们会给您一个可以提交的分步解决方案!
首先解释一下您目前所处的位置以及该过程的下一步是什么。 然后告诉我们您为下一步工作所做的努力,以及当您这样做时发生了什么。
目前,我们必须对您的各种“机器”做出假设,这些假设可能正确也可能不正确 – 我了解几种不同的现实世界汇编程序,它们针对特定处理器(或处理器系列),并且它们都以不同的方式工作:适用于一种情况的代码在另一种情况下会严重失败。 您需要阅读导师为您提供的每种“机器类型”的“机器代码定义”,以便获得它们的工作代码。 虽然看起来您的三个代码应该可以工作,但这涉及一些相当大的假设,这些假设可能对您的虚拟机无效。
例如,我可以编码的现实世界处理器系列中至少有两个根本没有乘法指令,并且其中一个对每条指令都有条件执行! 这些的汇编代码与您的示例有很大不同!
如果您在入门时遇到问题,那么这可能会有所帮助: 如何编写代码来解决问题,初学者指南[^]
解决方案2
鉴于您已经对三地址机器情况有了部分答案,那么这就是我对您的期望(适用于有问题的处理器架构):
LOAD A, R1 LOAD B, R2 ADD R1, R2, R3 MUL R3, R3, R4 LOAD C, R5 MUL R4, R5, R6 SUB R6, R1, R7
1) LOAD A, R1
:加载值 A
进入寄存器 R1
。
2) LOAD B, R2
:加载值 B
进入寄存器 R2
。
3) ADD R1, R2, R3
:将寄存器中的值相加 R1
和 R2
并将结果存入寄存器 R3
。
4) MUL R3, R3, R4
: 乘以寄存器中的值 R3
本身并将结果存储在寄存器中 R4
。
5) LOAD C, R5
:加载值 C
进入寄存器 R5
。
6) MUL R4, R5, R6
:将寄存器中的值相乘 R4
和 R5
并将结果存入寄存器 R6
。
7) SUB R6, R1, R7
:减去寄存器中的值 R1
从寄存器中的值 R6
并将结果存入寄存器 R7
。
[ad_2]
コメント