虽然简单算术操作指令的数目比较多,有15条,但实现方式都是相似的,与前几章逻辑、移位操作指令的实现方式也很类似,不需要增加新的模块、新的接口,只需要修改流水线译码阶段的ID模块、执行阶段的EX模块即可。实现思路如下。
(1)修改流水线译码阶段的ID模块,添加对上述简单算术操作指令的译码,给出运算类型alusel_o、运算子类型aluop_o、要写入的目的寄存器地址wd_o等信息,同时根据需要读取地址为rs、rt的通用寄存器的值。
(2)修改流水线执行阶段的EX模块,依据传入的信息,进行运算,得到运算结果,确...
分类:
其他好文 时间:
2014-08-20 00:01:15
阅读次数:
526
大家好:
作为一位软件开发人员,相信大家都思考过这样一个问题:为什么国产龙芯处理器性能与Intel同时期的处理器性能差别如此之大?为什么国产开源的软件发展远远不及国外?------是我们软件开发人员自身素养不够?还是原本国产处理器的硬件性能就不行?本人毕业与中国科学院计算技术研究所龙芯实验室,在龙芯实验室研发的那几年,也看到了龙芯的开源论坛上有那么多一批批对龙芯软件开源的爱好者。一...
分类:
移动开发 时间:
2014-08-16 11:12:20
阅读次数:
289
本章将实现MIPS32指令集架构定义的所有算术操作指令,共有21条,按照OpenMIPS实现这些指令的方式,可以分为三类,分别介绍如下。
(1)简单算术操作指令
共有15条,包括加法、减法、比较、乘法等指令,这些指令在流水线的执行阶段都只需要一个时钟周期,而且实现思路很直观,与第4章添加逻辑操作指令类似,只需修改译码阶段的ID模块、执行阶段的EX模块,即可实现。
(2)乘累加、乘累减指令
共有4条:乘累加madd、无符号乘累加maddu、乘累减msub、无符号乘累减msubu。其中madd、maddu要求操...
分类:
其他好文 时间:
2014-08-15 14:43:58
阅读次数:
585
本节将通过一个测试程序验证为OpenMIPS处理器添加的移动操作指令是否实现正确...
分类:
移动开发 时间:
2014-08-14 14:05:28
阅读次数:
278
自己动手写CPU,通过修改OpenMIPS,实现了MIPS32指令集架构中的移动操作指令...
分类:
移动开发 时间:
2014-08-13 14:58:26
阅读次数:
243
"INSTALL_FAILED_CPU_ABI_INCOMPATIBLE" 的意思: ?? INSTALL_FAILED 指"安裝失敗" , ? CPU_ABI??指"处理器属性 (即ARM/Intel-Atom/MIPS)" ? INCOMPATIBLE ? 指"不相容" ?? 整句话的意思就是 "你的这个A...
分类:
其他好文 时间:
2014-08-13 10:46:36
阅读次数:
196
这6条移动操作指令可以分为两类:一类是不涉及特殊寄存器HI、LO的指令,包括movn、movz;另一类是涉及特殊寄存器HI、LO的指令,包括mfhi、mflo、mthi、mtlo。前一类很好实现,基本思路与第5章实现逻辑、移位操作指令时类似,只需要修改ID、EX模块即可。后一类涉及到特殊寄存器HI、LO,需要为OpenMIPS添加HI、LO寄存器,以及相应的读写控制。下面分别介绍各自的实现思路。...
分类:
移动开发 时间:
2014-08-12 17:31:04
阅读次数:
644
install -m0755 /home/yanfa/workspace/trunk-wr703/build_dir/target-mips_r2_uClibc-0.9.33.2/lk_cnp_serial_eth/lk_cnp_serial_eth /home/yanfa/workspace/tr...
分类:
Windows程序 时间:
2014-08-06 22:12:22
阅读次数:
2659
MIPS32指令集架构中定义的移动操作指令共有6条:movn、movz、mfhi、mthi、mflo、mtlo,后4条指令涉及到了对特殊寄存器HI、LO的读写操作,截止到本章,我们的OpenMIPS处理器只实现了32个通用寄存器、以及PC,所有的指令也只是对32个通用寄存器进行操作,还没有涉及特殊寄存器,本章将实现HI、LO这两个特殊寄存器。...
分类:
移动开发 时间:
2014-08-06 14:55:01
阅读次数:
343
编写测试程序,对逻辑、移位、空指令的实现效果进行了检验...
分类:
其他好文 时间:
2014-08-05 14:08:39
阅读次数:
272