mirror of
https://github.com/lefticus/6502-cpp.git
synced 2025-01-14 01:29:58 +00:00
Remove redundant flag fix-ups
This commit is contained in:
parent
d5c8460e83
commit
17962801a0
@ -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)) {
|
||||
|
@ -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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user