【手写CPU】已实现8个逻辑、6个移位和2个空操作指令

本文已收录于 MIPS架构CPU设计 系列,共计 7 篇,本篇是第 1 篇

第一张图是有关逻辑、移位和空操作指令的汇编代码,图二:我们通过编译链工具将其转换为标准mips格式机器码:

写完之后做测试发现一个问题,就是有的指令无法从端口1中正确获取数据:

从怀疑译码阶段的代码有问题一直到怀疑数据冲突代码有问题,又怀疑到寄存器代码有问题。通过meld代码比对,模块测试。始终未发现问题在哪里。。。

经过一天的排错,最后发现是线连错了。。。。。我是死活也没想到线会连错。为什么不怀疑是线的问题呢?因为之前也用的从寄存器中取数据这种情形,但都出来正确结果了。。真是见鬼。我估计可能之前寄存器里的值本来就是0,取值失败输出的也是0,所以我就误以为取出来的。。

最后改完后,一切OK!可以正确的计算。

最后啊,因为经常要查指令码,我干脆从网上找了一份mips指令集手册。按手册写,这样标准化,也方便以后配合编译器、操作系统使用。

MIPS汇编手册我找了一份精简版,在这篇文章中:MIPS汇编语言学习笔记03:print HelloWorld

关于更多MIPS汇编语言本身的学习,欢迎阅读我的MIPS汇编学习笔记

作者: 高志远

高志远,23岁,男生,毕业于上海杉达学院电子商务系。

发表评论

邮箱地址不会被公开。