add a basic structure for disassembler + executor

Instructions added
Branch and Exchange (BX)
Branch and Link (B)
Multiply and Accumulate (MUL, MLA)
Multiply Long and Accumulate (SMULL, SMLAL, UMULL, UMLAL)
Single data swap (SWP)
[WIP] Halfword Transfer (STRH, LDRH)

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
2023-09-13 03:44:36 +05:30
parent 904e2b698e
commit 8a04eade92
22 changed files with 571 additions and 50 deletions

View File

@@ -1,4 +1,35 @@
#include "bus.hh"
#include <memory>
Bus::Bus(Memory&& memory)
: memory(std::move(memory)) {}
Bus::Bus(std::shared_ptr<Memory> memory)
: memory(memory) {}
uint8_t
Bus::read_byte(size_t address) {
return memory->read(address);
}
void
Bus::write_byte(size_t address, uint8_t byte) {
memory->write(address, byte);
}
uint16_t
Bus::read_halfword(size_t address) {
return memory->read_halfword(address);
}
void
Bus::write_halfword(size_t address, uint16_t halfword) {
memory->write_halfword(address, halfword);
}
uint32_t
Bus::read_word(size_t address) {
return memory->read_word(address);
}
void
Bus::write_word(size_t address, uint32_t word) {
memory->write_halfword(address, word);
}