Exemple #1
0
            public override Tlcs900Instruction Decode(byte b, Tlcs900Disassembler dasm)
            {
                if (this.fmt.Length == 0)
                {
                    return(new Tlcs900Instruction
                    {
                        Opcode = this.opcode,
                        Address = dasm.addr,
                        op1 = dasm.opSrc
                    });
                }

                if (this.fmt[0] == 'Z')
                {
                    // Override the size of opSrc
                    dasm.opSrc.Width = dasm.Size(fmt[1]);
                    return(new Tlcs900Instruction
                    {
                        Opcode = this.opcode,
                        Address = dasm.addr,
                        op1 = dasm.opSrc,
                    });
                }
                else
                {
                    dasm.opDst = dasm.DecodeOperand(b, this.fmt);
                    if (dasm.opDst == null)
                    {
                        return(dasm.Decode(b, Opcode.invalid, ""));
                    }
                    return(new Tlcs900Instruction
                    {
                        Opcode = this.opcode,
                        Address = dasm.addr,
                        op1 = dasm.opDst,
                        op2 = dasm.opSrc,
                    });
                }
            }