mirror of
https://github.com/lefticus/6502-cpp.git
synced 2025-05-17 06:38:19 +00:00
add jst
This commit is contained in:
parent
ba5fa6c978
commit
2a2ce54d32
16
src/main.cpp
16
src/main.cpp
@ -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");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user