Adding previous work.
This commit is contained in:
parent
25c4ea796f
commit
3109cc0e75
3 changed files with 57 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
.vscode/
|
||||||
|
bin/
|
42
cpu.hpp
Normal file
42
cpu.hpp
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace plutoisa
|
||||||
|
{
|
||||||
|
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));
|
||||||
|
|
||||||
|
void cpuInstructions(uint8_t *rom)
|
||||||
|
{
|
||||||
|
switch (rom[*pointer])
|
||||||
|
{
|
||||||
|
case 0x00: // LOAD R0 M0
|
||||||
|
registers[rom[*pointer + 1]] = memory[rom[*pointer + 2]];
|
||||||
|
*pointer += 3;
|
||||||
|
break;
|
||||||
|
case 0x01: // STORE R0 M0
|
||||||
|
memory[rom[*pointer + 2]] = registers[rom[*pointer + 1]];
|
||||||
|
*pointer += 3;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cout << "Invalid Instruction, expect broken behavior" << endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpuEmulation(uint8_t *rom)
|
||||||
|
{
|
||||||
|
*pointer = 0;
|
||||||
|
|
||||||
|
memory[0] = 0x12;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
cout << static_cast<int>(registers[0]) << endl;
|
||||||
|
cpuInstructions(rom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
main.cpp
Normal file
13
main.cpp
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#include "cpu.hpp"
|
||||||
|
|
||||||
|
using namespace plutoisa;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
uint8_t *rom = (uint8_t *)malloc(16 * sizeof(uint8_t));
|
||||||
|
rom[0] = 0x00;
|
||||||
|
rom[1] = 0x00;
|
||||||
|
rom[2] = 0x00;
|
||||||
|
rom[3] = 0xFF;
|
||||||
|
cpuEmulation(rom);
|
||||||
|
}
|
Reference in a new issue