Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions execute.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,14 +250,17 @@ void execute() {
break;
case ALU_SUBR:
rf.write(alu.instr.subr.rd, rf[alu.instr.subr.rn] - rf[alu.instr.subr.rm]);
setCarryOverflow(rf[alu.instr.subr.rn], rf[alu.instr.subr.rm], OF_SUB);
//needs stats and flags
break;
case ALU_ADD3I:
// needs stats and flags
rf.write(alu.instr.add3i.rd, rf[alu.instr.add3i.rn] + alu.instr.add3i.imm);
setCarryOverflow(rf[alu.instr.add3i.rn], rf[alu.instr.add3i.imm], OF_ADD);
break;
case ALU_SUB3I:
rf.write(alu.instr.sub3i.rd, rf[alu.instr.sub3i.rn] - alu.instr.sub3i.imm);
setCarryOverflow(rf[alu.instr.sub3i.rn], rf[alu.instr.sub3i.imm], OF_SUB);
break;
case ALU_MOV:
// needs stats and flags
Expand All @@ -269,10 +272,13 @@ void execute() {
case ALU_ADD8I:
// needs stats and flags
rf.write(alu.instr.add8i.rdn, rf[alu.instr.add8i.rdn] + alu.instr.add8i.imm);
setCarryOverflow(rf[alu.instr.add8i.rdn], rf[alu.instr.add8i.imm], OF_ADD);
break;
case ALU_SUB8I:
// needs stats and flags
rf.write(alu.instr.sub8i.rdn, rf[alu.instr.sub8i.rdn] - alu.instr.sub8i.imm);
setCarryOverflow(rf[alu.instr.sub8i.rdn],
rf[alu.instr.sub8i.imm], OF_SUB);
break;
default:
cout << "instruction not implemented" << endl;
Expand Down Expand Up @@ -372,10 +378,12 @@ void execute() {
switch(misc_ops) {
case MISC_PUSH:
// need to implement
dmem.write(SP_REG, SP - (misc.instr.sub.imm*4));

break;
case MISC_POP:
// need to implement
dmem.write(SP_REG, SP + (misc.instr.add.imm*4));
break;
case MISC_SUB:
// functionally complete, needs stats
Expand Down