📄 stdafx.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 + -