



本节给出一个简单的汇编程序,其中用到了部分数据处理类指令,程序本身没有什么特殊目的,读者可以借助这个程序对OR1200的数据处理类指令有一个更直接的了解,同时在对某一个具体指令分析的时候,可以将用例程序加载到最小系统中,使用ModelSim仿真,从而观察该指令在流水线各个阶段引起的信号变化。程序如下。
参考第2章中给出的步骤,在Ubuntu虚拟机中新建一个文件Example.S,内容就是上述代码,然后复制Makefile、Bin2Mem.exe、ram.ld到Example.S所在目录,打开终端,调整路径至代码所在目录,输入“make all”,就得到了OR1KSim模拟器的执行结果Example.trace及可以在ModelSim中使用的存储器初始化文件mem.data。Example.trace文件的内容如下。
可见程序的执行效果确如设想的那样。本书光盘的Chapter4目录下包括ModelSim仿真工程,Chapter4/Code目录下包括示例程序源代码。
在上面的程序中有两条指令会在本章做重点分析:l.add、l.sfeqi,这两条指令分别有各自的特点。
l.add的特点是:源操作数都是寄存器,并且有要写入的目的寄存器。
l.sfeqi的特点是:指令中含有立即数,没有要写入的目的寄存器,进行的运算与l.add进行的运算不同。
其余数据处理类指令主要有三点不同:指令中有无立即数、有无要写入的目的寄存器、运算种类。