mirror of
https://github.com/lefticus/6502-cpp.git
synced 2025-07-16 06:24:30 +00:00
Remove redundant flag fix-ups
This commit is contained in:
@@ -262,7 +262,7 @@ bool optimize(std::vector<mos6502> &instructions, [[maybe_unused]] const Persona
|
|||||||
if (instructions[op].opcode == mos6502::OpCode::lda || instructions[op].opcode == mos6502::OpCode::bcc
|
if (instructions[op].opcode == mos6502::OpCode::lda || instructions[op].opcode == mos6502::OpCode::bcc
|
||||||
|| instructions[op].opcode == mos6502::OpCode::bcs || instructions[op].opcode == mos6502::OpCode::ldy
|
|| instructions[op].opcode == mos6502::OpCode::bcs || instructions[op].opcode == mos6502::OpCode::ldy
|
||||||
|| instructions[op].opcode == mos6502::OpCode::inc || instructions[op].opcode == mos6502::OpCode::clc
|
|| instructions[op].opcode == mos6502::OpCode::inc || instructions[op].opcode == mos6502::OpCode::clc
|
||||||
|| instructions[op].opcode == mos6502::OpCode::sec) {
|
|| instructions[op].opcode == mos6502::OpCode::sec || instructions[op].text.starts_with("; Handle N / S")) {
|
||||||
if (instructions[op - 1].text == "; END remove if next is lda, bcc, bcs, ldy, inc, clc, sec"
|
if (instructions[op - 1].text == "; END remove if next is lda, bcc, bcs, ldy, inc, clc, sec"
|
||||||
|| (instructions[op - 2].text == "; END remove if next is lda, bcc, bcs, ldy, inc, clc, sec"
|
|| (instructions[op - 2].text == "; END remove if next is lda, bcc, bcs, ldy, inc, clc, sec"
|
||||||
&& instructions[op - 1].type == ASMLine::Type::Directive)) {
|
&& instructions[op - 1].type == ASMLine::Type::Directive)) {
|
||||||
|
@@ -285,6 +285,7 @@ void indirect_store(std::vector<mos6502> &instructions,
|
|||||||
std::string s_set = fmt::format("s_set_{}", location);
|
std::string s_set = fmt::format("s_set_{}", location);
|
||||||
std::string s_clear = fmt::format("s_clear_{}", location);
|
std::string s_clear = fmt::format("s_clear_{}", location);
|
||||||
|
|
||||||
|
instructions.emplace_back(ASMLine::Type::Directive, "; Handle N / S flags from AVR");
|
||||||
instructions.emplace_back(mos6502::OpCode::bmi, Operand(Operand::Type::literal, n_set));
|
instructions.emplace_back(mos6502::OpCode::bmi, Operand(Operand::Type::literal, n_set));
|
||||||
instructions.emplace_back(mos6502::OpCode::bvs, Operand(Operand::Type::literal, s_set));
|
instructions.emplace_back(mos6502::OpCode::bvs, Operand(Operand::Type::literal, s_set));
|
||||||
instructions.emplace_back(mos6502::OpCode::jmp, Operand(Operand::Type::literal, s_clear));
|
instructions.emplace_back(mos6502::OpCode::jmp, Operand(Operand::Type::literal, s_clear));
|
||||||
|
Reference in New Issue
Block a user