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

📄 registerbank.dit

📁 可以自由开发的MIPS仿真器模型(.exe),指令执行动画显示.通过修改graphics和对应的元件和互联文件(.dit)可以自己画流水线,其中.dit文件使用简单的硬件描述语言编写.而mipsit是
💻 DIT
字号:
// a register bank
class CRegisterBank
{
	// inputs:
	
	// the register must be kinda clocked to work cause we cant guarantee that
	// the inputs are all correct
	// this is the clock input
	in Ph2:1
	
	in ReadRegister1:5
	in ReadRegister2:5
	
	// wb:
	in RegWrite:1
	in WriteRegister:5
	in WriteData
	
	
	// outputs:
	out ReadData1
	out ReadData2
	
	// ports for register view
	// maybe I should make the register bank in c++... But what fun would that be
	in vpRegNbr:5
	in vpWrite
	out vpRead
	out vpUpdate
	
	script
		
		// registers are stored in this array
		var R = new Array(32);
		R[0] = 0;

		function OnPh2()
			{
				
				// write back must be done first.
				var WbReg = WriteRegister.Get();
				if ( RegWrite.Get() && WbReg!=0 )
					{
						R[WbReg] = WriteData.Get();
						
						// notify the view
						vpUpdate.Set(WbReg);
					}
				
				// and the outputs next:
				ReadData1.Set( R[ReadRegister1.Get()] );
				ReadData2.Set( R[ReadRegister2.Get()] );
			}

	function OnVpRegNbr()
	{
		vpRead.Set(R[vpRegNbr.Get()]);
	}

	function OnVpWrite()
	{
		
		if ( vpRegNbr.Get()!=0 )
		{
			R[vpRegNbr.Get()] = vpWrite.Get();
			vpUpdate.Set(vpRegNbr.Get());
			ReadData1.Set( R[ReadRegister1.Get()] );
			ReadData2.Set( R[ReadRegister2.Get()] );
		}
	}
		
	end_script
	
	event Ph2 OnPh2()
	event vpRegNbr OnVpRegNbr()
	event vpWrite OnVpWrite();
}

⌨️ 快捷键说明

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