Minor changes: 1.0.1
This commit is contained in:
		
							parent
							
								
									d83aef84a7
								
							
						
					
					
						commit
						d77733d29f
					
				
					 2 changed files with 48 additions and 49 deletions
				
			
		
							
								
								
									
										93
									
								
								cpu.hpp
									
										
									
									
									
								
							
							
						
						
									
										93
									
								
								cpu.hpp
									
										
									
									
									
								
							|  | @ -16,56 +16,55 @@ You should have received a copy of the GNU General Public License along with thi | |||
| #include <cstdlib> | ||||
| #include <cstdint> | ||||
| 
 | ||||
| namespace plutoisa { | ||||
|     using namespace std; | ||||
| using namespace std; | ||||
| 
 | ||||
|     uint8_t *registers = ( uint8_t * ) malloc ( 8 * sizeof ( uint8_t ) ); | ||||
|     uint8_t *memory = ( uint8_t * ) malloc ( 128 * sizeof ( uint8_t ) ); | ||||
|     uint8_t *pointer = ( uint8_t * ) malloc ( sizeof ( uint8_t ) ); | ||||
| uint8_t *registers = ( uint8_t * ) malloc ( 8 * sizeof ( uint8_t ) ); | ||||
| uint8_t *memory = ( uint8_t * ) malloc ( 128 * sizeof ( uint8_t ) ); | ||||
| uint8_t *pointer = ( uint8_t * ) malloc ( sizeof ( uint8_t ) ); | ||||
| 
 | ||||
|     void cpuInstructions ( uint8_t *rom ) { | ||||
|         cout << static_cast<int>(rom[*pointer]) << endl; | ||||
|         cout << static_cast<int>(*pointer) << endl; | ||||
|         switch ( rom[*pointer] ) { | ||||
|         case 0x00: // GET
 | ||||
|             registers[rom[*pointer + 1]] = rom[*pointer + 2]; | ||||
|             *pointer += 3; | ||||
|             break; | ||||
|         case 0x01: // LOAD
 | ||||
|             registers[rom[*pointer + 1]] = memory[rom[*pointer + 2]]; | ||||
|             *pointer += 3; | ||||
|             break; | ||||
|         case 0x02: // STORE
 | ||||
|             memory[rom[*pointer + 2]] = registers[rom[*pointer + 1]]; | ||||
|             *pointer += 3; | ||||
|             break; | ||||
|         case 0x03: // ADD
 | ||||
|             registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] + registers[rom[*pointer + 3]]; | ||||
|             *pointer += 4; | ||||
|             break; | ||||
|         case 0x04: // SUB
 | ||||
|             registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] - registers[rom[*pointer + 3]]; | ||||
|             *pointer += 4; | ||||
|             break; | ||||
|         case 0x05: // JMP
 | ||||
| void cpuInstructions ( uint8_t *rom ) { | ||||
|     cout << static_cast<int> ( rom[*pointer] ) << endl; | ||||
|     cout << static_cast<int> ( *pointer ) << endl; | ||||
|     switch ( rom[*pointer] ) { | ||||
|     case 0x00: // GET
 | ||||
|         registers[rom[*pointer + 1]] = rom[*pointer + 2]; | ||||
|         *pointer += 3; | ||||
|         break; | ||||
|     case 0x01: // LOAD
 | ||||
|         registers[rom[*pointer + 1]] = memory[rom[*pointer + 2]]; | ||||
|         *pointer += 3; | ||||
|         break; | ||||
|     case 0x02: // STORE
 | ||||
|         memory[rom[*pointer + 2]] = registers[rom[*pointer + 1]]; | ||||
|         *pointer += 3; | ||||
|         break; | ||||
|     case 0x03: // ADD
 | ||||
|         registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] + registers[rom[*pointer + 3]]; | ||||
|         *pointer += 4; | ||||
|         break; | ||||
|     case 0x04: // SUB
 | ||||
|         registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] - registers[rom[*pointer + 3]]; | ||||
|         *pointer += 4; | ||||
|         break; | ||||
|     case 0x05: // JMP
 | ||||
|         *pointer = rom[*pointer + 1]; | ||||
|         break; | ||||
|     case 0x06: // JEQ
 | ||||
|         if ( rom[*pointer + 2] == registers[rom[*pointer + 3]] ) { | ||||
|             *pointer = rom[*pointer + 1]; | ||||
|             break; | ||||
|         case 0x06: // JEQ
 | ||||
|             if ( rom[*pointer + 2] == registers[rom[*pointer + 3]] ) { | ||||
|                 *pointer = rom[*pointer + 1]; | ||||
|             } | ||||
|             break; | ||||
|         default: | ||||
|             cout << "Invalid Instruction, quitting." << endl; | ||||
|             exit ( 1 ); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     void cpuEmulation ( uint8_t *rom ) { | ||||
|         *pointer = 0; | ||||
| 
 | ||||
|         while ( true ) { | ||||
|             cpuInstructions ( rom ); | ||||
|         } | ||||
|         break; | ||||
|     default: | ||||
|         cout << "Invalid Instruction, quitting." << endl; | ||||
|         exit ( 1 ); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void cpuEmulation ( uint8_t *rom ) { | ||||
|     *pointer = 0; | ||||
| 
 | ||||
|     while ( true ) { | ||||
|         cpuInstructions ( rom ); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										4
									
								
								main.cpp
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								main.cpp
									
										
									
									
									
								
							|  | @ -11,11 +11,11 @@ You should have received a copy of the GNU General Public License along with thi | |||
| 
 | ||||
| #include "cpu.hpp" | ||||
| 
 | ||||
| using namespace plutoisa; | ||||
| using namespace std; | ||||
| 
 | ||||
| int main ( int argc, char *argv[] ) { | ||||
|     const char *filename = argv[1]; | ||||
|     const int rom_size = 16; | ||||
|     const int rom_size = 256; | ||||
| 
 | ||||
|     ifstream file ( filename, ios::binary ); | ||||
| 
 | ||||
|  |  | |||
		Reference in a new issue