1
0
mirror of https://github.com/lefticus/6502-cpp.git synced 2025-05-17 06:38:19 +00:00
This commit is contained in:
Jason Turner 2021-04-18 16:50:56 -06:00
parent ba5fa6c978
commit 2a2ce54d32

View File

@ -127,7 +127,8 @@ struct mos6502 : ASMLine
rts,
clc,
sec,
bit
bit,
jsr
};
static bool get_is_branch(const OpCode o) {
@ -156,6 +157,7 @@ struct mos6502 : ASMLine
case OpCode::ORA:
case OpCode::cmp:
case OpCode::jmp:
case OpCode::jsr:
case OpCode::adc:
case OpCode::sbc:
case OpCode::rts:
@ -192,6 +194,7 @@ struct mos6502 : ASMLine
case OpCode::dec:
case OpCode::ORA:
case OpCode::jmp:
case OpCode::jsr:
case OpCode::bne:
case OpCode::bmi:
case OpCode::beq:
@ -283,6 +286,8 @@ struct mos6502 : ASMLine
return "sec";
case OpCode::bit:
return "bit";
case OpCode::jsr:
return "jsr";
case OpCode::unknown:
return "";
};
@ -353,7 +358,8 @@ struct i386 : ASMLine
sbbb,
negb,
notb,
retl
retl,
call
};
static OpCode parse_opcode(Type t, const std::string &o)
@ -400,6 +406,8 @@ struct i386 : ASMLine
if (o == "sbbb") return OpCode::sbbb;
if (o == "pushl") return OpCode::pushl;
if (o == "retl") return OpCode::retl;
if (o == "call") return OpCode::call;
if (o == "calll") return OpCode::call;
}
}
throw std::runtime_error("Unknown opcode: " + o);
@ -736,6 +744,10 @@ void translate_instruction(std::vector<mos6502> &instructions, const i386::OpCod
}
break;
case i386::OpCode::call:
instructions.emplace_back(mos6502::OpCode::jsr, o1);
break;
default:
throw std::runtime_error("Cannot translate unhandled instruction");