Skip to content

Instantly share code, notes, and snippets.

@nphilou
Created January 24, 2018 18:48
Show Gist options
  • Select an option

  • Save nphilou/b3ba4fd0efe54164bca3a4d487b5b12f to your computer and use it in GitHub Desktop.

Select an option

Save nphilou/b3ba4fd0efe54164bca3a4d487b5b12f to your computer and use it in GitHub Desktop.
#include "memory.h"
State ldb(Machine *m, unsigned char dst, unsigned char src1, bool imm, short int src2) {
short int a = m->regs[src1];
short int b = imm ? src2 : m->regs[src2];
m->regs[dst] = m->mem[a + b];
return EXEC_CONTINUE;
}
State ldw(Machine *m, unsigned char dst, unsigned char src1, bool imm, short int src2) {
short int a = m->regs[src1];
short int b = imm ? src2 : m->regs[src2];
short int addr = a + b;
m->regs[dst] = m->mem[addr] | (m->mem[addr + 1] << 8);
return EXEC_CONTINUE;
}
State stb(Machine *m, unsigned char dst, unsigned char src1, bool imm, short int src2) {
short int a = m->regs[src1];
short int b = imm ? src2 : m->regs[src2];
m->mem[a + b] = (unsigned char) m->regs[dst];
return EXEC_CONTINUE;
}
State stw(Machine *m, unsigned char dst, unsigned char src1, bool imm, short int src2) {
short int a = m->regs[src1];
short int b = imm ? src2 : m->regs[src2];
short int addr = a + b;
m->mem[addr] = (unsigned char) (m->regs[dst] & 0xFF);
m->mem[addr + 1] = (unsigned char) ((m->regs[dst] >> 8) & 0xFF);
return EXEC_CONTINUE;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment