Remove duplicated code (from const definitions) the performance benefit isn't worth the amount of duplicated code.

Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
This commit is contained in:
Adrian Conlon
2018-06-24 20:58:20 +01:00
parent feb5e7ad60
commit cac871cf2b
30 changed files with 50 additions and 259 deletions
-4
View File
@@ -40,10 +40,6 @@ namespace Fuse {
return m_ram.reference(address);
}
virtual uint8_t reference(uint16_t address) const {
return m_ram.reference(address);
}
public:
TestRunner(const Test& test, const ExpectedTestResult& expected);
+4 -4
View File
@@ -11,8 +11,8 @@ namespace EightBit {
public:
Disassembler();
static std::string state(const Z80& cpu);
std::string disassemble(const Z80& cpu);
static std::string state(Z80& cpu);
std::string disassemble(Z80& cpu);
static std::string flag(uint8_t value, int flag, const std::string& represents);
static std::string flags(uint8_t value);
@@ -30,7 +30,7 @@ namespace EightBit {
bool m_prefixED;
bool m_prefixFD;
void disassemble(std::ostringstream& output, const Z80& cpu, uint16_t pc);
void disassemble(std::ostringstream& output, Z80& cpu, uint16_t pc);
void disassembleCB(
std::ostringstream& output,
@@ -52,7 +52,7 @@ namespace EightBit {
void disassembleOther(
std::ostringstream& output,
const Z80& cpu,
Z80& cpu,
uint16_t pc,
std::string& specification,
int& dumpCount,
-59
View File
@@ -51,44 +51,28 @@ namespace EightBit {
Signal<Z80> ExecutingInstruction;
PinLevel& M1() { return m_m1Line; } // Out
PinLevel M1() const { return m_m1Line; }
virtual int execute(uint8_t opcode) final;
virtual int step() final;
virtual register16_t& AF() final;
virtual register16_t AF() const final;
virtual register16_t& BC() final;
virtual register16_t BC() const final;
virtual register16_t& DE() final;
virtual register16_t DE() const final;
virtual register16_t& HL() final;
virtual register16_t HL() const final;
register16_t& IX() { return m_ix; }
register16_t IX() const { return m_ix; }
uint8_t& IXH() { return IX().high; }
uint8_t IXH() const { return IX().high; }
uint8_t& IXL() { return IX().low; }
uint8_t IXL() const { return IX().low; }
register16_t& IY() { return m_iy; }
register16_t IY() const { return m_iy; }
uint8_t& IYH() { return IY().high; }
uint8_t IYH() const { return IY().high; }
uint8_t& IYL() { return IY().low; }
uint8_t IYL() const { return IY().low; }
refresh_t& REFRESH() { return m_refresh; }
refresh_t REFRESH() const { return m_refresh; }
uint8_t& IV() { return iv; }
uint8_t IV() const { return iv; }
int& IM() { return m_interruptMode; }
int IM() const { return m_interruptMode; }
bool& IFF1() { return m_iff1; }
bool IFF1() const { return m_iff1; }
bool& IFF2() { return m_iff2; }
bool IFF2() const { return m_iff2; }
void exx() {
m_registerSet ^= 1;
@@ -274,23 +258,6 @@ namespace EightBit {
}
}
register16_t RP(const int rp) const {
ASSUME(rp >= 0);
ASSUME(rp <= 3);
switch (rp) {
case 0:
return BC();
case 1:
return DE();
case 2:
return HL2();
case 3:
return SP();
default:
UNREACHABLE;
}
}
register16_t& HL2() {
if (LIKELY(!m_displaced))
return HL();
@@ -300,15 +267,6 @@ namespace EightBit {
return IY();
}
register16_t HL2() const {
if (LIKELY(!m_displaced))
return HL();
if (m_prefixDD)
return IX();
// Must be FD prefix
return IY();
}
register16_t& RP2(const int rp) {
ASSUME(rp >= 0);
ASSUME(rp <= 3);
@@ -326,23 +284,6 @@ namespace EightBit {
}
}
register16_t RP2(const int rp) const {
ASSUME(rp >= 0);
ASSUME(rp <= 3);
switch (rp) {
case 0:
return BC();
case 1:
return DE();
case 2:
return HL2();
case 3:
return AF();
default:
UNREACHABLE;
}
}
static void adjustHalfCarryAdd(uint8_t& f, const uint8_t before, const uint8_t value, const int calculation) {
setFlag(f, HC, calculateHalfCarryAdd(before, value, calculation));
}
+4 -4
View File
@@ -15,7 +15,7 @@ EightBit::Disassembler::Disassembler() {
m_formatter.exceptions(boost::io::all_error_bits ^ boost::io::too_many_args_bit);
}
std::string EightBit::Disassembler::state(const Z80& cpu) {
std::string EightBit::Disassembler::state(Z80& cpu) {
auto pc = cpu.PC();
auto sp = cpu.SP();
@@ -171,14 +171,14 @@ std::string EightBit::Disassembler::alu(int which) {
throw std::logic_error("Unhandled alu operation");
}
std::string EightBit::Disassembler::disassemble(const Z80& cpu) {
std::string EightBit::Disassembler::disassemble(Z80& cpu) {
m_prefixCB = m_prefixDD = m_prefixED = m_prefixFD = false;
std::ostringstream output;
disassemble(output, cpu, cpu.PC().word);
return output.str();
}
void EightBit::Disassembler::disassemble(std::ostringstream& output, const Z80& cpu, uint16_t pc) {
void EightBit::Disassembler::disassemble(std::ostringstream& output, Z80& cpu, uint16_t pc) {
auto& bus = cpu.BUS();
auto opcode = bus.peek(pc);
@@ -423,7 +423,7 @@ void EightBit::Disassembler::disassembleED(
void EightBit::Disassembler::disassembleOther(
std::ostringstream& output,
const Z80& cpu,
Z80& cpu,
uint16_t pc,
std::string& specification,
int& dumpCount,
-16
View File
@@ -8,34 +8,18 @@ EightBit::Z80::Z80(Bus& bus, InputOutput& ports)
m_ports(ports) {
}
EightBit::register16_t EightBit::Z80::AF() const {
return m_accumulatorFlags[m_accumulatorFlagsSet];
}
EightBit::register16_t& EightBit::Z80::AF() {
return m_accumulatorFlags[m_accumulatorFlagsSet];
}
EightBit::register16_t EightBit::Z80::BC() const {
return m_registers[m_registerSet][BC_IDX];
}
EightBit::register16_t& EightBit::Z80::BC() {
return m_registers[m_registerSet][BC_IDX];
}
EightBit::register16_t EightBit::Z80::DE() const {
return m_registers[m_registerSet][DE_IDX];
}
EightBit::register16_t& EightBit::Z80::DE() {
return m_registers[m_registerSet][DE_IDX];
}
EightBit::register16_t EightBit::Z80::HL() const {
return m_registers[m_registerSet][HL_IDX];
}
EightBit::register16_t& EightBit::Z80::HL() {
return m_registers[m_registerSet][HL_IDX];
}
+2 -2
View File
@@ -52,7 +52,7 @@ void Board::Cpu_ExecutingInstruction_Cpm(const EightBit::Z80& cpu) {
}
}
void Board::bdos() const {
void Board::bdos() {
switch (CPU().C()) {
case 0x2:
std::cout << CPU().E();
@@ -73,7 +73,7 @@ void Board::Cpu_ExecutingInstruction_Profile(const EightBit::Z80& cpu) {
m_profiler.addInstruction(peek(pc.word));
}
void Board::Cpu_ExecutingInstruction_Debug(const EightBit::Z80& cpu) {
void Board::Cpu_ExecutingInstruction_Debug(EightBit::Z80& cpu) {
std::cerr
<< EightBit::Disassembler::state(cpu)
+3 -7
View File
@@ -22,11 +22,7 @@ public:
void initialise();
protected:
virtual uint8_t& reference(uint16_t address) {
return m_ram.reference(address);
}
virtual uint8_t reference(uint16_t address) const {
virtual uint8_t& reference(uint16_t address) final {
return m_ram.reference(address);
}
@@ -40,8 +36,8 @@ private:
void Cpu_ExecutingInstruction_Cpm(const EightBit::Z80& cpu);
void Cpu_ExecutingInstruction_Debug(const EightBit::Z80& cpu);
void Cpu_ExecutingInstruction_Debug(EightBit::Z80& cpu);
void Cpu_ExecutingInstruction_Profile(const EightBit::Z80& cpu);
void bdos() const;
void bdos();
};