11template <
typename TContext>
class MnemonicBuilderUnaryInstr {
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 &rn) {
19 static_cast<void>(bflags);
20 const bool is_setflags = (iflags &
static_cast<InstrFlagsSet
>(InstrFlags::kSetFlags)) != 0U;
21 mctx.builder.AddString(instr_spec)
22 .AddString(is_setflags ==
true ?
"S" :
"")
23 .AddString(It::GetConditionAsStr(mctx.cpua))
25 .AddString(Reg::GetRegisterName(rd.Get()))
27 .AddString(Reg::GetRegisterName(rn.Get()))
35 MnemonicBuilderUnaryInstr() =
delete;
40 ~MnemonicBuilderUnaryInstr() =
delete;
46 MnemonicBuilderUnaryInstr(
const MnemonicBuilderUnaryInstr &r_src) =
default;
52 MnemonicBuilderUnaryInstr &operator=(
const MnemonicBuilderUnaryInstr &r_src) =
delete;
58 MnemonicBuilderUnaryInstr(MnemonicBuilderUnaryInstr &&r_src) =
delete;
64 MnemonicBuilderUnaryInstr &operator=(MnemonicBuilderUnaryInstr &&r_src) =
delete;