summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/drcbec.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/drcbec.h')
-rw-r--r--src/devices/cpu/drcbec.h57
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 &param);
- 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