Add new function find_data() to separate the instruction from op_code.
This commit is contained in:
parent
683349d210
commit
1bdbf7a7e7
@ -1,7 +1,6 @@
|
||||
#ifndef DEBUG_H
|
||||
#define DEBUG_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "../toy.h"
|
||||
|
||||
void fprintBits(size_t const size, void const * const ptr, FILE *file_pointer);
|
||||
|
23
src/main.c
23
src/main.c
@ -3,10 +3,29 @@
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
uint16_t ram[RAM_SIZE];
|
||||
uint16_t ram[RAM_SIZE];
|
||||
uint16_t ir;
|
||||
uint8_t op_code;
|
||||
uint16_t pc = 0;
|
||||
uint16_t accu = 0;
|
||||
int data_addr=0;
|
||||
bool run = true;
|
||||
|
||||
if(initialise_ram(ram,argc,argv)==-1) return 1;
|
||||
makeHexDump(true,ram);
|
||||
// makeHexDump(true,ram);
|
||||
|
||||
// while(run && pc<(RAM_SIZE-1))
|
||||
// {
|
||||
ir = ram[2];
|
||||
pc++;
|
||||
op_code = get_opcode(ir);
|
||||
printf("OP Code: %u\n",op_code);
|
||||
data_addr=find_data(ir);
|
||||
printf("Adresse: %d\n",data_addr);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -58,3 +58,12 @@ uint8_t get_opcode(uint16_t instruction)
|
||||
return opcode;
|
||||
}
|
||||
|
||||
int find_data(uint16_t instruction)
|
||||
{
|
||||
int instr;
|
||||
if(instruction > 32767) instr = -1;
|
||||
else instr=instruction & 4095;
|
||||
return instr;
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define RAM_SIZE 4096
|
||||
@ -11,5 +12,6 @@
|
||||
|
||||
int initialise_ram(uint16_t *ram, int argc, char **argv );
|
||||
uint8_t get_opcode(uint16_t instruction);
|
||||
int find_data(uint16_t instruction);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user