概述我需要用C/C++
编写MIPS
汇编程序.在我开始编写一些代码之前,我想我应该花点时间先做一些规划.我需要考虑大约15个MIPS指令,包括J,但不包括JR.程序需要接收包含.text,.data和.word部分以及标签的文件,然后输出第一行的十进制文件,其中包含指令数和数据字数.其余的是以十六进制编码的机器代码.最后一组行由十六进制值组成,表示数据段中单词的初始值.我知道我需要做2次传递才能首先解析 我需要用C/C++编写MIPS汇编程序.在我开始编写一些代码之前,我想我应该花点时间先做一些规划.我需要考虑大约15个MIPS指令,包括J,但不包括JR.程序需要接收包含.text,.data和.word部分以及标签的文件,然后输出第一行的十进制文件,其中包含指令数和数据字数.其余的是以十六进制编码的机器代码.最后一组行由十六进制值组成,表示数据段中单词的初始值.我知道我需要做2次传递才能首先解析标签和JUMP指令.基本上我只是在
寻找有关如何设置数据结构的建议.我应该做一个包含OPCODE,RS,RT,RD等的字符串数组……然后以某种方式将其转换为十六进制?或者有更好的方法从有任何建议/经验的人那里做到这一点?感谢您的帮助/建议!解决方法 很久以前,我实际上已经做了类似项目的事情了!你必须要做2次通过才对.但是,不要为寄存器使用字符串数组.实际上你根本不需要使用字符串.您可以将OPCODE放在枚举中,将寄存器放在枚举中.对于15条指令,您可以通过手动编码switch-case,if-else语句而不是设计完全通用的解决方案来轻松完成大部分工作.使用正则表达式可能很诱人,但对于你的问题,这是不值得的(尽管如果你有时间,你绝对应该利用任何机会学习正则表达式!).然后使用类似hashmap的结构在寄存器和OPCODE及其HEX值之间进行映射,并使用它们.您可以直接在代码中进行任何地址计算.这只是一个建议,你一定要试验.我的主要观点是,如果你正在读一个字符串,你不应该先将它存储在同一个表单中,然后再处理它并存储一些东西(读取:对象)更有意义.
基本上,您只需要第一次传递标签等.您可以在第二次传递中执行其他所有 *** 作.如果您查看任何 *** 作系统教科书中基本的典型编译器/汇编程序流程图,您可以轻松模拟每个步骤 – 这就是我所做的.
希望这可以帮助!
总结
以上是内存溢出为你收集整理的需要用C或C编写MIPS汇编程序,寻找一些设计建议全部内容,希望文章能够帮你解决需要用C或C编写MIPS汇编程序,寻找一些设计建议所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)