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 <cstdlib> | ||||||
| #include <cstdint> | #include <cstdint> | ||||||
| 
 | 
 | ||||||
| namespace plutoisa { | using namespace std; | ||||||
|     using namespace std; |  | ||||||
| 
 | 
 | ||||||
|     uint8_t *registers = ( uint8_t * ) malloc ( 8 * 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 *memory = ( uint8_t * ) malloc ( 128 * sizeof ( uint8_t ) ); | ||||||
|     uint8_t *pointer = ( uint8_t * ) malloc ( sizeof ( uint8_t ) ); | uint8_t *pointer = ( uint8_t * ) malloc ( sizeof ( uint8_t ) ); | ||||||
| 
 | 
 | ||||||
|     void cpuInstructions ( uint8_t *rom ) { | void cpuInstructions ( uint8_t *rom ) { | ||||||
|         cout << static_cast<int>(rom[*pointer]) << endl; |     cout << static_cast<int> ( rom[*pointer] ) << endl; | ||||||
|         cout << static_cast<int>(*pointer) << endl; |     cout << static_cast<int> ( *pointer ) << endl; | ||||||
|         switch ( rom[*pointer] ) { |     switch ( rom[*pointer] ) { | ||||||
|         case 0x00: // GET
 |     case 0x00: // GET
 | ||||||
|             registers[rom[*pointer + 1]] = rom[*pointer + 2]; |         registers[rom[*pointer + 1]] = rom[*pointer + 2]; | ||||||
|             *pointer += 3; |         *pointer += 3; | ||||||
|             break; |         break; | ||||||
|         case 0x01: // LOAD
 |     case 0x01: // LOAD
 | ||||||
|             registers[rom[*pointer + 1]] = memory[rom[*pointer + 2]]; |         registers[rom[*pointer + 1]] = memory[rom[*pointer + 2]]; | ||||||
|             *pointer += 3; |         *pointer += 3; | ||||||
|             break; |         break; | ||||||
|         case 0x02: // STORE
 |     case 0x02: // STORE
 | ||||||
|             memory[rom[*pointer + 2]] = registers[rom[*pointer + 1]]; |         memory[rom[*pointer + 2]] = registers[rom[*pointer + 1]]; | ||||||
|             *pointer += 3; |         *pointer += 3; | ||||||
|             break; |         break; | ||||||
|         case 0x03: // ADD
 |     case 0x03: // ADD
 | ||||||
|             registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] + registers[rom[*pointer + 3]]; |         registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] + registers[rom[*pointer + 3]]; | ||||||
|             *pointer += 4; |         *pointer += 4; | ||||||
|             break; |         break; | ||||||
|         case 0x04: // SUB
 |     case 0x04: // SUB
 | ||||||
|             registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] - registers[rom[*pointer + 3]]; |         registers[rom[*pointer + 1]] = registers[rom[*pointer + 2]] - registers[rom[*pointer + 3]]; | ||||||
|             *pointer += 4; |         *pointer += 4; | ||||||
|             break; |         break; | ||||||
|         case 0x05: // JMP
 |     case 0x05: // JMP
 | ||||||
|  |         *pointer = rom[*pointer + 1]; | ||||||
|  |         break; | ||||||
|  |     case 0x06: // JEQ
 | ||||||
|  |         if ( rom[*pointer + 2] == registers[rom[*pointer + 3]] ) { | ||||||
|             *pointer = rom[*pointer + 1]; |             *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" | #include "cpu.hpp" | ||||||
| 
 | 
 | ||||||
| using namespace plutoisa; | using namespace std; | ||||||
| 
 | 
 | ||||||
| int main ( int argc, char *argv[] ) { | int main ( int argc, char *argv[] ) { | ||||||
|     const char *filename = argv[1]; |     const char *filename = argv[1]; | ||||||
|     const int rom_size = 16; |     const int rom_size = 256; | ||||||
| 
 | 
 | ||||||
|     ifstream file ( filename, ios::binary ); |     ifstream file ( filename, ios::binary ); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 patrick_pluto
						patrick_pluto