java - 只需要帮助启动一个从 c++/c 转移到 mips 的程序

标签 java c++ converters mips

<分区>

首先我想说明一下,我要的是作业。

我的想法是用 c++ 或 java 编写一个程序,用户输入一个简单的 c 代码(A=B、一个 while 循环、一个 for 循环和数组函数),输出是 mips 代码(lw addi 等)我们可以自由使用任何寄存器。

当然,我并不是要完整的代码。问题出在我的脑海里,我只能想到对整个输入字符串进行硬编码,然后将其切割成一部分,然后运行大量的 if 条件和/或切换案例,我认为必须有一种更简单的方法,但我无法得到我的想法。

最佳答案

该死的,每当你开始研究编译器时,回想起来都会很疯狂。

无论如何,您可能还没有达到从头开始构建 C 编译器的水平。

所以这样想,您需要一组指令,是的,您将必须遍历程序字符串并将该字符串转换为 MIPS 指令。

除非是编译器类(class),否则最天真的方法可能是你的老师所期望的,就是逐行解析程序文本,因为它应该是一个简单的程序,正如你所说的那样您将评估的每种类型的表达式都有很多条件。

提示:在阅读 for/while 循环后立即将其保存为标签,并从那里检查必要时跳转的终点在哪里(完成 for/while 条件等)

现在如果是编译项目。我强烈建议您阅读这本书:

Compilers: Principles, Techniques, and Tools

因为要构建一个真正的编译器,您需要了解编译器的所有阶段以及它们如何协同工作...您还需要了解一些语言理论。

关于java - 只需要帮助启动一个从 c++/c 转移到 mips 的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770548/

相关文章:

c# - 如何从 C# Web 服务调用 C++ Oppencv 项目?

C++迭代器有效性问题

sqlite - 如何在 Flutter 中使用 Sqlite 将 bool 值转换为 Int 值?

java - 错误 : No resource identifier found for attribute 'onTouch' in package 'android'

java - 通过 ObjectOutputStream 发送文件然后将其保存在 Java 中?

c++ - 尽管使用 unique_ptr 内存泄漏

javascript - 你能将一个变量除/乘另一个数字四舍五入到最接近的百分之几吗?

java - 在 PrimeFaces 表单中验证后,JSF 转换器无法工作

java - 调用方法中的数组被调用方法数组覆盖,没有任何返回语句

java - 重新绘制() FontMetrics