在 Marie.js 中,我将如何为以下伪代码执行 if 语句和循环?

In Marie.js how would I go about doing an if statement and loop for the following pseudocode?

max = 0
value = 0

LOOP
    INPUT value

    IF (value == 0)
    EXIT LOOP
    ENDIF

    IF (value > max)
           max = value
    ENDIF
ENDLOOP

PRINT max
STOP

我正在使用 https://marie.js.org/,但我在尝试弄清楚如何执行 if 语句时遇到了很多麻烦。我试图使用 skipcond。我也在为无限循环而苦苦挣扎。任何帮助我开始的帮助将不胜感激。

首先,将伪代码转换为if-goto风格的汇编语言&机器码。

if a then
   b
endif

翻译成

    if !a then goto endif1
    b
endif1,

其次,将你的伪代码变量翻译成玛丽汇编language/machine代码变量。

比如你在伪代码中有一个整数max,那么在数据区放:

max, dec 0

最后,将每行if-goto代码翻译成汇编。


条件测试if a < b goto 是通过使用减法进行比较来完成的。因此,将 a 加载到累加器中,减去设置条件代码的 b,然后执行 SkipCond 并转到跳过或不跳过要执行的代码。


Marie.js 有很多简单的例子。查看乘法示例,查看 data/variable 声明、条件分支、循环、输入、输出。