00001
00036 #include "mips1.H"
00037
00038 int mips1::nRegs(void) {
00039 return 73;
00040 }
00041
00042
00043 ac_word mips1::reg_read( int reg ) {
00044
00045 if ( ( reg >= 0 ) && ( reg < 32 ) )
00046 return RB.read( reg );
00047 else {
00048 if ( ( reg >= 33 ) && ( reg < 35 ) )
00049 return RB.read( reg - 1 );
00050 else
00051
00052 if ( reg == 37 )
00053 return ac_resources::ac_pc;
00054 }
00055
00056 return 0;
00057 }
00058
00059
00060 void mips1::reg_write( int reg, ac_word value ) {
00061
00062 if ( ( reg >= 0 ) && ( reg < 32 ) )
00063 RB.write( reg, value );
00064 else
00065 {
00066
00067 if ( ( reg >= 33 ) && ( reg < 35 ) )
00068 RB.write( reg - 1, value );
00069 else
00070
00071 if ( reg == 37 )
00072 ac_resources::ac_pc = value;
00073 }
00074 }
00075
00076
00077 unsigned char mips1::mem_read( unsigned int address ) {
00078 return ac_resources::IM->read_byte( address );
00079 }
00080
00081
00082 void mips1::mem_write( unsigned int address, unsigned char byte ) {
00083 ac_resources::IM->write_byte( address, byte );
00084 }