private Operand MakeOperand(DisassemblyOperand operand, byte embeddedData, ushort extraData) { switch (operand) { // 16 bit Registers - Direct Addressing Mode case DisassemblyOperand.Af: return Operand.DirectAF; case DisassemblyOperand.Bc: return Operand.DirectBC; case DisassemblyOperand.De: return Operand.DirectDE; case DisassemblyOperand.Hl: return Operand.DirectHL; case DisassemblyOperand.Sp: return Operand.DirectSP; // 16 bit Registers - Indirect Addressing Mode case DisassemblyOperand.MemoryBc: return Operand.IndirectBC; case DisassemblyOperand.MemoryDe: return Operand.IndirectDE; case DisassemblyOperand.MemoryHl: return Operand.IndirectHL; // 8 bit Registers - Direct Addressing Mode case DisassemblyOperand.A: return Operand.DirectA; case DisassemblyOperand.B: return Operand.DirectB; case DisassemblyOperand.C: return Operand.DirectC; case DisassemblyOperand.D: return Operand.DirectD; case DisassemblyOperand.E: return Operand.DirectE; case DisassemblyOperand.H: return Operand.DirectH; case DisassemblyOperand.L: return Operand.DirectL; // 8 bit Registers - Indirect Addressing Mode case DisassemblyOperand.RegisterPort: return Operand.IndirectC; // 16 bit Immediate Value case DisassemblyOperand.Word: return new Operand<ushort>(extraData); // 16 bit Address case DisassemblyOperand.Memory: return new Operand<ushort>(extraData, false); // 8 bit Immediate Value case DisassemblyOperand.Byte: return new Operand<byte>((byte)extraData); // 8 bit Embedded Value case DisassemblyOperand.Embedded: return new Operand<byte>(embeddedData); // 8 bit Immediate Address case DisassemblyOperand.BytePort: return new Operand<byte>((byte)extraData, false); // Stack relative addressing case DisassemblyOperand.StackRelative: /*goto case DisassemblyOperand.SByte; case DisassemblyOperand.SByte: */return new Operand<SByte>((sbyte)(byte)extraData); default: throw new InvalidOperationException(); } }
private Operand MakeOperand(DisassemblyOperand operand, byte embeddedData, ushort extraData) { switch (operand) { // 16 bit Registers - Direct Addressing Mode case DisassemblyOperand.Af: return(Operand.DirectAF); case DisassemblyOperand.Bc: return(Operand.DirectBC); case DisassemblyOperand.De: return(Operand.DirectDE); case DisassemblyOperand.Hl: return(Operand.DirectHL); case DisassemblyOperand.Sp: return(Operand.DirectSP); // 16 bit Registers - Indirect Addressing Mode case DisassemblyOperand.MemoryBc: return(Operand.IndirectBC); case DisassemblyOperand.MemoryDe: return(Operand.IndirectDE); case DisassemblyOperand.MemoryHl: return(Operand.IndirectHL); // 8 bit Registers - Direct Addressing Mode case DisassemblyOperand.A: return(Operand.DirectA); case DisassemblyOperand.B: return(Operand.DirectB); case DisassemblyOperand.C: return(Operand.DirectC); case DisassemblyOperand.D: return(Operand.DirectD); case DisassemblyOperand.E: return(Operand.DirectE); case DisassemblyOperand.H: return(Operand.DirectH); case DisassemblyOperand.L: return(Operand.DirectL); // 8 bit Registers - Indirect Addressing Mode case DisassemblyOperand.RegisterPort: return(Operand.IndirectC); // 16 bit Immediate Value case DisassemblyOperand.Word: return(new Operand <ushort>(extraData)); // 16 bit Address case DisassemblyOperand.Memory: return(new Operand <ushort>(extraData, false)); // 8 bit Immediate Value case DisassemblyOperand.Byte: return(new Operand <byte>((byte)extraData)); // 8 bit Embedded Value case DisassemblyOperand.Embedded: return(new Operand <byte>(embeddedData)); // 8 bit Immediate Address case DisassemblyOperand.BytePort: return(new Operand <byte>((byte)extraData, false)); // Stack relative addressing case DisassemblyOperand.StackRelative: /*goto case DisassemblyOperand.SByte; * case DisassemblyOperand.SByte: */return(new Operand <SByte>((sbyte)(byte)extraData)); default: throw new InvalidOperationException(); } }