Exemple #1
0
		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();
			}
		}
Exemple #2
0
        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();
            }
        }