Remove redundant flag fix-ups

This commit is contained in:
Jason Turner 2021-06-10 21:43:36 -06:00
parent d5c8460e83
commit 17962801a0
2 changed files with 2 additions and 1 deletions

View File

@ -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
|| 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::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"
|| (instructions[op - 2].text == "; END remove if next is lda, bcc, bcs, ldy, inc, clc, sec"
&& instructions[op - 1].type == ASMLine::Type::Directive)) {

View File

@ -285,6 +285,7 @@ void indirect_store(std::vector<mos6502> &instructions,
std::string s_set = fmt::format("s_set_{}", 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::bvs, Operand(Operand::Type::literal, s_set));
instructions.emplace_back(mos6502::OpCode::jmp, Operand(Operand::Type::literal, s_clear));