加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

需要用C或C编写MIPS汇编程序,寻找一些设计建议

发布时间:2020-12-16 07:10:44 所属栏目:百科 来源:网络整理
导读:我需要用C/C++编写MIPS汇编程序.在我开始编写一些代码之前,我想我应该花点时间先做一些规划.我需要考虑大约15个MIPS指令,包括J,但不包括JR.程序需要接收包含.text,.data和.word部分以及标签的文件,然后输出第一行的十进制文件,其中包含指令数和数据字数.其余
我需要用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值之间进行映射,并使用它们.您可以直接在代码中进行任何地址计算.这只是一个建议,你一定要试验.我的主要观点是,如果你正在读一个字符串,你不应该先将它存储在同一个表单中,然后再处理它并存储一些东西(读取:对象)更有意义.

基本上,您只需要第一次传递标签等.您可以在第二次传递中执行其他所有操作.如果您查看任何操作系统教科书中基本的典型编译器/汇编程序流程图,您可以轻松模拟每个步骤 – 这就是我所做的.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读