11template <
typename TContext>
class MnemonicBuilderBinaryInstrWithRotation {
13 using It =
typename TContext::It;
14 using Reg =
typename TContext::Reg;
15 using SReg =
typename TContext::SReg;
16 template <
typename TDest,
typename TArg0>
17 static void Build(
const char *instr_spec, TContext &mctx,
const MnemonicBuilderFlagsSet &bflags,
18 const InstrFlagsSet &iflags,
const TDest &rd,
const TArg0 &rm,
20 static_cast<void>(bflags);
21 const bool is_setflags = (iflags &
static_cast<InstrFlagsSet
>(InstrFlags::kSetFlags)) != 0U;
22 mctx.builder.AddString(instr_spec)
23 .AddString(is_setflags ==
true ?
"S" :
"")
24 .AddString(It::GetConditionAsStr(mctx.cpua))
26 .AddString(Reg::GetRegisterName(rd.Get()))
28 .AddString(Reg::GetRegisterName(rm.Get()));
31 mctx.builder.AddString(
", ROR #").AddUInt(rotation);
34 mctx.builder.Terminate();
41 MnemonicBuilderBinaryInstrWithRotation() =
delete;
46 ~MnemonicBuilderBinaryInstrWithRotation() =
delete;
52 MnemonicBuilderBinaryInstrWithRotation(
const MnemonicBuilderBinaryInstrWithRotation &r_src) =
59 MnemonicBuilderBinaryInstrWithRotation &
60 operator=(
const MnemonicBuilderBinaryInstrWithRotation &r_src) =
delete;
66 MnemonicBuilderBinaryInstrWithRotation(MnemonicBuilderBinaryInstrWithRotation &&r_src) =
delete;
72 MnemonicBuilderBinaryInstrWithRotation &
73 operator=(MnemonicBuilderBinaryInstrWithRotation &&r_src) =
delete;