From 7e25100590918ad3eca8cafd4eac1af9081f6719 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sun, 18 Aug 2019 02:13:18 +0100 Subject: [PATCH] base/asm-common.h: Add an `IMM' macro for immediate operands. The most useful version of this is `IMM(r, ...)', because that varies according to the target architecture, but the others might be considered an improvement over the Intel syntax. It turns out that I don't actually need this: the motivation was caused by a typo-ed register field. But I think it still makes a useful addition. --- base/asm-common.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/base/asm-common.h b/base/asm-common.h index 040250ba..3ef0de92 100644 --- a/base/asm-common.h +++ b/base/asm-common.h @@ -286,17 +286,26 @@ name: # define _DECOR_mem_q(addr) qword ptr addr #endif +#define _DECOR_imm_b(imm) byte imm +#define _DECOR_imm_w(imm) word imm +#define _DECOR_imm_d(imm) dword imm +#if CPUFAM_AMD64 +# define _DECOR_imm_q(imm) qword imm +#endif + #if CPUFAM_X86 # define _DECOR_abcd_r(reg) e##reg##x # define _DECOR_xp_r(reg) e##reg # define _DECOR_ip_r(reg) e##reg # define _DECOR_mem_r(addr) dword ptr addr +# define _DECOR_imm_r(imm) dword imm #endif #if CPUFAM_AMD64 # define _DECOR_abcd_r(reg) r##reg##x # define _DECOR_xp_r(reg) r##reg # define _DECOR_ip_r(reg) r##reg # define _DECOR_mem_r(addr) qword ptr addr +# define _DECOR_imm_r(imm) qword imm #endif // R_r(decor) applies decoration decor to register r, which is an internal @@ -326,6 +335,9 @@ name: // address addr (which should supply its own square-brackets). #define MEM(decor, addr) _DECOR(mem, decor, addr) +// Refer to an immediate datum of the type implied by decor. +#define IMM(decor, imm) _DECOR(mem, decor, imm) + // Applies decoration decor to assembler-level register name reg. #define _REGFORM(reg, decor) _GLUE(_REGFORM_, reg)(decor) -- 2.11.0