gpt4 book ai didi

c++ - 如何将三地址代码转换为 MIPS 汇编语言?

转载 作者:行者123 更新时间:2023-11-30 02:04:39 26 4
gpt4 key购买 nike

我正在做一个项目,在这个项目中我必须创建一个翻译器来为 C 代码生成 MIPS 汇编代码。我使用的编程语言是 C++,我已经完成了三个地址代码的生成,我真的很困惑如何进一步进行。

最佳答案

如前所述,这是直接翻译。真的没什么好澄清的。例如,采用以下三地址代码:

      i := 0                  ; assignment
L1: if i >= 10 goto L2 ; conditional jump
t0 := i*i
t1 := &b ; address-of operation
t2 := t1 + i ; t2 holds the address of b[i]
*t2 := t0 ; store through pointer
i := i + 1
goto L1
L2:

MIPS 翻译是:

        li $t0, 0             #allocator assigned i to t0
L1: bge $t0, 10, L2
mult $t1, $t0, $t0
la $t2, b
add $t3, $t2, $t0
sw $t1, ($t3)
addi $t0, $t0, 1
j L1
L2:

如果您有幸拥有这样的三个地址,您几乎不需要做任何事情。找到相应的操作码以配合指令。寄存器分配已经完成。如果三地址代码实际上是一堆字符串,我会考虑编写一个小型解析器(使用生成器)而不是尝试从字符串中提取信息。

关于c++ - 如何将三地址代码转换为 MIPS 汇编语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com