13template <
typename TContext>
class MnemonicBuilderTernaryLoadStoreInstrWithImm {
15 using It =
typename TContext::It;
16 using Reg =
typename TContext::Reg;
17 using SReg =
typename TContext::SReg;
19 template <
typename TDest,
typename TTgt,
typename TArg0>
20 static void Build(
const char *instr_spec, TContext &mctx,
const MnemonicBuilderFlagsSet &bflags,
21 const InstrFlagsSet &iflags,
const TDest &rd,
const TTgt &rt,
const TArg0 &rn,
23 static_cast<void>(bflags);
24 const bool is_wback = (iflags &
static_cast<InstrFlagsSet
>(InstrFlags::kWBack)) != 0U;
25 const bool is_index = (iflags &
static_cast<InstrFlagsSet
>(InstrFlags::kIndex)) != 0U;
26 const bool is_add = (iflags &
static_cast<InstrFlagsSet
>(InstrFlags::kAdd)) != 0U;
28 mctx.builder.AddString(instr_spec)
29 .AddString(It::GetConditionAsStr(mctx.cpua))
31 .AddString(Reg::GetRegisterName(rd.Get()))
33 .AddString(Reg::GetRegisterName(rt.Get()))
38 mctx.builder.Terminate();
45 MnemonicBuilderTernaryLoadStoreInstrWithImm() =
delete;
50 ~MnemonicBuilderTernaryLoadStoreInstrWithImm() =
delete;
56 MnemonicBuilderTernaryLoadStoreInstrWithImm(
57 const MnemonicBuilderTernaryLoadStoreInstrWithImm &r_src) =
default;
63 MnemonicBuilderTernaryLoadStoreInstrWithImm &
64 operator=(
const MnemonicBuilderTernaryLoadStoreInstrWithImm &r_src) =
delete;
70 MnemonicBuilderTernaryLoadStoreInstrWithImm(MnemonicBuilderTernaryLoadStoreInstrWithImm &&r_src) =
77 MnemonicBuilderTernaryLoadStoreInstrWithImm &
78 operator=(MnemonicBuilderTernaryLoadStoreInstrWithImm &&r_src) =
delete;
static void Build(TMnemonicBuilder &builder, const bool &is_add, const bool &is_index, const bool &is_wback, const TArg0 &rn, const u32 &imm)
Uses the given str builder to build a string representing the different addressing modes of instructi...
Definition relative_adr_builder.h:23