⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdafx.h

📁 SystemC 实现 MIPS 处理器 源代码
💻 H
字号:
#ifndef STDAFX_H
#define STDAFX_H

//#define DEBUG

#include "systemc.h"
#include <fstream>

ofstream fout("e:\\mips_out.dat");

sc_uint<32> * register_data;

void Print(sc_uint<32> x,ostream & out)
{
	int i;
	for (i=31;i>=0;--i) out<<x[i];
	out<<endl;
	return ;
}

void Print(sc_uint<32> *x,int len,ostream & out)
{
	int i;
	for (i=0;i<len;++i) {out<<"Reg "<<i<<": ";Print(x[i],out);}
	return;
}

void PrintInstr(sc_uint<32> x,ostream & out)
{
	/*
	[31..26] 	[25..21] 	[20..16] 	[15..11] 	[10..06] 	[05..00] 	
      op 	       rs 	        rt 	        rd 	       sa 	      func
	*/

	int i;
	for (i=31;i>=26;--i) out<<x[i];
	out<<" ";
	for (i=25;i>=21;--i) out<<x[i];
	out<<" ";
	for (i=20;i>=16;--i) out<<x[i];
	out<<" ";
	for (i=15;i>=11;--i) out<<x[i];
	out<<" ";
	for (i=10;i>=6;--i) out<<x[i];
	out<<" ";
	for (i=5;i>=0;--i) out<<x[i];

	out<<" --> ";
	switch (x.range(31,26).to_uint())
	{
	case 0: 
		switch(x.range(5,0).to_uint())
		{
		case 32:
			out<<"add";
			break;
		}
		break;
	case 8:
		out<<"addi";
		break;
	case 12:
		out<<"andi";
		break;
	case 35:
		out<<"lw";
		break;
	case 43:
		out<<"sw";
		break;
	case 4:
		out<<"beq";
		break;
	case 2:
		out<<"jp";
		break;

	case 5:
		out<<"bne";
		break;
	}

	if (x==0) out<<"nop";

	out<<endl;
}

void Print(sc_uint<6> x,int i,ostream & out)
{
	switch(x)
	{
			//add
			case 32:
				out<<"add"<<endl;
				break;
			//sub
			case 34:
				out<<"sub"<<endl;
				break;
			//and
			case 36:
				out<<"and"<<endl;
				break;
			//or
			case 37:
				out<<"or"<<endl;
				break;
			//sll
			case 0:
				out<<"sll"<<endl;
				break;
			//srl
			case 2:
				out<<"srl"<<endl;
				break;
			//sra
			case 3:
				out<<"sra"<<endl;
				break;
	}
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -