From fb9c81fd1f726244be8a43b2f775306bfc7f7954 Mon Sep 17 00:00:00 2001 From: Oxore Date: Tue, 9 May 2023 18:21:30 +0300 Subject: Migrate Bcc to new Arg data structure --- disasm.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'disasm.h') diff --git a/disasm.h b/disasm.h index 2dcff2f..24495e6 100644 --- a/disasm.h +++ b/disasm.h @@ -249,6 +249,7 @@ enum class Condition: uint8_t { enum class SizeSpec: uint8_t { kNone, kByte, + kShort, kWord, kLong, }; @@ -325,6 +326,11 @@ struct Arg { a.uword = regmask; return a; } + static constexpr Self Displacement(const int16_t displacement) { + Arg a{ArgType::kDisplacement, 0}; + a.lword = displacement; + return a; + } private: static constexpr Self addrModeXn(const ArgType type, const uint8_t xn) { Arg a{type, 0}; @@ -366,7 +372,7 @@ private: a.lword = value; return a; } - static constexpr RegKind RegKindFromRegCharSizeChar(char r, OpSize s) + static constexpr RegKind regKindFromRegCharSizeChar(char r, OpSize s) { if (r == 'd' && s == OpSize::kWord) { return RegKind::kDnWord; @@ -398,7 +404,7 @@ public: return addrModeD16AnAddr(D16AnPCAddr{arg.xn, static_cast(arg.value)}); case AddrMode::kD8AnXiAddr: return addrModeD8AnAddr(D8AnPCXiAddr{ - RegKindFromRegCharSizeChar(arg.r, arg.s), + regKindFromRegCharSizeChar(arg.r, arg.s), arg.xn, arg.xi, static_cast(arg.value), @@ -411,7 +417,7 @@ public: return addrModeD16PCAddr(D16AnPCAddr{0, static_cast(arg.value)}); case AddrMode::kD8PCXiAddr: return addrModeD8PCAddr(D8AnPCXiAddr{ - RegKindFromRegCharSizeChar(arg.r, arg.s), + regKindFromRegCharSizeChar(arg.r, arg.s), 0, arg.xi, static_cast(arg.value), -- cgit v1.2.3