diff options
author | 2020-05-25 16:42:42 +0200 | |
---|---|---|
committer | 2020-05-25 16:42:57 +0200 | |
commit | 22513fb6fe281f5ccb75aaddb6417a12a66c313d (patch) | |
tree | 3cf84032cc6482d685a8dbb57e015bd17c7f7fdc /src/devices/cpu/z8/z8.h | |
parent | e42c2d2874cf9c1092c01ab5ce9ef997d465ce25 (diff) |
emumem: A little more speedup. cache and specific change syntax, and are not pointers anymore [O. Galibert]
The last(?) two changes are:
- Add a template parameter to everything (theoretically the address
space width, in practice a level derived from it to keep as much
compatibility between widths as possible) so that the shift size
becomes a constant.
- Change the syntax of declaring and initializing the caches and
specifics so that they're embedded in the owner device. Solves
lifetime issues and also removes one indirection (looking up the base
dispatch pointer through the cache/specific pointer).
Diffstat (limited to 'src/devices/cpu/z8/z8.h')
-rw-r--r-- | src/devices/cpu/z8/z8.h | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h index c21c9189359..22ad98513b5 100644 --- a/src/devices/cpu/z8/z8.h +++ b/src/devices/cpu/z8/z8.h @@ -74,10 +74,10 @@ private: address_space_config m_data_config; address_space_config m_register_config; - address_space *m_program; - memory_access_cache<0, 0, ENDIANNESS_BIG> *m_cache; - address_space *m_data; - address_space *m_regs; + memory_access<16, 0, 0, ENDIANNESS_BIG>::cache m_cache; + memory_access<16, 0, 0, ENDIANNESS_BIG>::specific m_program; + memory_access<16, 0, 0, ENDIANNESS_BIG>::specific m_data; + memory_access< 8, 0, 0, ENDIANNESS_BIG>::specific m_regs; // callbacks devcb_read8::array<4> m_input_cb; @@ -191,9 +191,9 @@ private: inline uint8_t fetch(); inline uint8_t fetch_opcode(); inline uint16_t fetch_word(); - inline uint8_t register_read(uint8_t offset) { return m_regs->read_byte(offset); } + inline uint8_t register_read(uint8_t offset) { return m_regs.read_byte(offset); } inline uint16_t register_pair_read(uint8_t offset); - inline void register_write(uint8_t offset, uint8_t data) { m_regs->write_byte(offset, data); } + inline void register_write(uint8_t offset, uint8_t data) { m_regs.write_byte(offset, data); } inline void register_pair_write(uint8_t offset, uint16_t data); inline uint8_t get_working_register(int offset) const; inline uint8_t get_register(uint8_t offset) const; @@ -205,10 +205,10 @@ private: inline void set_flag(uint8_t flag, int state); inline void clear(uint8_t dst); inline void load(uint8_t dst, uint8_t src); - inline void load_from_memory(address_space &space); - inline void load_to_memory(address_space &space); - inline void load_from_memory_autoinc(address_space &space); - inline void load_to_memory_autoinc(address_space &space); + inline void load_from_memory(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space); + inline void load_to_memory(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space); + inline void load_from_memory_autoinc(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space); + inline void load_to_memory_autoinc(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space); inline void pop(uint8_t dst); inline void push(uint8_t src); inline void add_carry(uint8_t dst, uint8_t src); |