libmicroemu 0.2.0
ARM Microcontroller Emulator Library
Loading...
Searching...
No Matches
mnemonic_builder_binary64bit_instr.h
1#pragma once
2
3#include "libmicroemu/internal/trace/mnemonic_builder_flags.h"
4
6#include "libmicroemu/types.h"
7
8namespace libmicroemu::internal {
9
13template <typename TContext> class MnemonicBuilderBinary64bitInstr {
14public:
15 using It = typename TContext::It;
16 using Reg = typename TContext::Reg;
17 using SReg = typename TContext::SReg;
18
19 template <typename TDestLo, typename TDestHi, typename TArg0, typename TArg1>
20 static void Build(const char *instr_spec, TContext &mctx, const MnemonicBuilderFlagsSet &bflags,
21 const InstrFlagsSet &iflags, const TDestLo &d_lo, const TDestHi &d_hi,
22 const TArg0 &rn, const TArg1 &rm) {
23 static_cast<void>(bflags);
24 static_cast<void>(iflags);
25
26 mctx.builder.AddString(instr_spec)
27 .AddString(It::GetConditionAsStr(mctx.cpua))
28 .AddChar(' ')
29 .AddString(Reg::GetRegisterName(d_lo.Get()))
30 .AddString(", ")
31 .AddString(Reg::GetRegisterName(d_hi.Get()))
32 .AddString(", ")
33 .AddString(Reg::GetRegisterName(rn.Get()))
34 .AddString(", ")
35 .AddString(Reg::GetRegisterName(rm.Get()))
36 .Terminate();
37 }
38
39private:
43 MnemonicBuilderBinary64bitInstr() = delete;
44
48 ~MnemonicBuilderBinary64bitInstr() = delete;
49
54 MnemonicBuilderBinary64bitInstr(const MnemonicBuilderBinary64bitInstr &r_src) = default;
55
60 MnemonicBuilderBinary64bitInstr &operator=(const MnemonicBuilderBinary64bitInstr &r_src) = delete;
61
66 MnemonicBuilderBinary64bitInstr(MnemonicBuilderBinary64bitInstr &&r_src) = delete;
67
72 MnemonicBuilderBinary64bitInstr &operator=(MnemonicBuilderBinary64bitInstr &&r_src) = delete;
73};
74
75} // namespace libmicroemu::internal
The libmicroemu::internal namespace contains all classes and functions of libmicroemu which are priva...
Definition bkpt_flags.h:6
Contains the Result class which is used to return the result of a function.