Read the instructions into simulated memory instead of separate buffer
This commit is contained in:
		@@ -6,6 +6,8 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#define MEM_SIZE (1 << 16)
 | 
			
		||||
 | 
			
		||||
struct basic_string {
 | 
			
		||||
  char str[4096];
 | 
			
		||||
};
 | 
			
		||||
@@ -22,6 +24,9 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
    return 1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  u8 memory[MEM_SIZE];
 | 
			
		||||
  memset((void *)memory, 0, MEM_SIZE);
 | 
			
		||||
 | 
			
		||||
  const char *filename = argv[1];
 | 
			
		||||
 | 
			
		||||
  printf("Filename: %s\n", filename);
 | 
			
		||||
@@ -37,10 +42,7 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
 | 
			
		||||
  fseek(fp, 0, SEEK_SET);
 | 
			
		||||
 | 
			
		||||
  u8 buffer[size + 1];
 | 
			
		||||
  memset((void *)buffer, 0, size + 1);
 | 
			
		||||
 | 
			
		||||
  fread((void *)buffer, sizeof(u8), size, fp);
 | 
			
		||||
  fread((void *)memory, sizeof(u8), size, fp);
 | 
			
		||||
 | 
			
		||||
  fclose(fp);
 | 
			
		||||
 | 
			
		||||
@@ -55,7 +57,7 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
 | 
			
		||||
  while (offset < size) {
 | 
			
		||||
    instruction decoded;
 | 
			
		||||
    Sim86_Decode8086Instruction(size - offset, buffer + offset, &decoded);
 | 
			
		||||
    Sim86_Decode8086Instruction(size - offset, memory + offset, &decoded);
 | 
			
		||||
 | 
			
		||||
    if (decoded.Op) {
 | 
			
		||||
      offset += decoded.Size;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user