void ARGBYTE(bool big, addr_mode M, out u16 b) { switch (M) { case addr_mode.IM: immbyte(big, out b); break; case addr_mode.DI: DIRBYTE(big, out b); break; case addr_mode.EX: EXTBYTE(big, out b); break; case addr_mode.IX: IDXBYTE(big, out b); break; case addr_mode.IX1: IDX1BYTE(big, out b); break; case addr_mode.IX2: IDX2BYTE(big, out b); break; default: b = 0; break; } }
/* macros for convenience */ void ARGADDR(bool big, addr_mode M) { switch (M) { case addr_mode.IM: static_assert(addr_mode.IM != M, "invalid mode for this instruction"); break; case addr_mode.DI: DIRECT(big); break; case addr_mode.EX: EXTENDED(big); break; case addr_mode.IX: INDEXED(); break; case addr_mode.IX1: INDEXED1(big); break; case addr_mode.IX2: INDEXED2(big); break; default: break; } }