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:
35
src/bus.cc
35
src/bus.cc
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user