diff options
Diffstat (limited to 'src/devices/cpu/drcbec.h')
-rw-r--r-- | src/devices/cpu/drcbec.h | 57 |
1 files changed, 15 insertions, 42 deletions
diff --git a/src/devices/cpu/drcbec.h b/src/devices/cpu/drcbec.h index d9c28612fea..4bfea5a46f4 100644 --- a/src/devices/cpu/drcbec.h +++ b/src/devices/cpu/drcbec.h @@ -8,54 +8,27 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_CPU_DRCBEC_H +#define MAME_CPU_DRCBEC_H -#ifndef __DRCBEC_H__ -#define __DRCBEC_H__ +#pragma once #include "drcuml.h" -#include "drcbeut.h" - - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -union drcbec_instruction; - -class drcbe_c : public drcbe_interface -{ -public: - // construction/destruction - drcbe_c(drcuml_state &drcuml, device_t &device, drc_cache &cache, uint32_t flags, int modes, int addrbits, int ignorebits); - virtual ~drcbe_c(); - // required overrides - virtual void reset() override; - virtual int execute(uml::code_handle &entry) override; - virtual void generate(drcuml_block &block, const uml::instruction *instlist, uint32_t numinst) override; - virtual bool hash_exists(uint32_t mode, uint32_t pc) override; - virtual void get_info(drcbe_info &info) override; +#include <memory> -private: - // helpers - void output_parameter(drcbec_instruction **dstptr, void **immedptr, int size, const uml::parameter ¶m); - void fixup_label(void *parameter, drccodeptr labelcodeptr); - int dmulu(uint64_t &dstlo, uint64_t &dsthi, uint64_t src1, uint64_t src2, bool flags); - int dmuls(uint64_t &dstlo, uint64_t &dsthi, int64_t src1, int64_t src2, bool flags); - uint32_t tzcount32(uint32_t value); - uint64_t tzcount64(uint64_t value); - // internal state - drc_hash_table m_hash; // hash table state - drc_map_variables m_map; // code map - drc_label_list m_labels; // label list - drc_label_fixup_delegate m_fixup_delegate; // precomputed delegate +namespace drc { - static const uint32_t s_condition_map[32]; - static uint64_t s_immediate_zero; -}; +std::unique_ptr<drcbe_interface> make_drcbe_c( + drcuml_state &drcuml, + device_t &device, + drc_cache &cache, + uint32_t flags, + int modes, + int addrbits, + int ignorebits); +} // namespace drc -#endif /* __DRCBEC_H__ */ +#endif // MAME_CPU_DRCBEC_H |