示例#1
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                var instr = base.Decode(wInstr, dasm);

                instr.condition = (ArmCondition)(wInstr >> 28);
                return(instr);
            }
示例#2
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                TraceDecoder(wInstr);
                uint op = (wInstr >> shift) & mask;

                return(decoders[op].Decode(wInstr, dasm));
            }
示例#3
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                TraceDecoder(wInstr, tag);
                uint n = Bitfield.ReadFields(bitfields, wInstr);

                return(this.decoders[n].Decode(wInstr, dasm));
            }
示例#4
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                TraceMask(wInstr);
                var op      = (wInstr >> pos) & mask;
                var decoder = predicate(op) ? trueDecoder : falseDecoder;

                return(decoder.Decode(wInstr, dasm));
            }
示例#5
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                var op = (wInstr >> shift) & mask;

                if (!decoders.TryGetValue(op, out Decoder decoder))
                {
                    decoder = @default;
                }
                return(decoder.Decode(wInstr, dasm));
            }
示例#6
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                TraceMask(wInstr, tag);
                var op = (wInstr >> shift) & 0xF;

                if (op == 0xF)
                {
                    return(is1111.Decode(wInstr, dasm));
                }
                else
                {
                    return(not1111.Decode(wInstr, dasm));
                }
            }
示例#7
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                dasm.state.opcode     = this.opcode;
                dasm.state.vectorData = this.vectorData;
                for (int i = 0; i < mutators.Length; ++i)
                {
                    if (!mutators[i](wInstr, dasm))
                    {
                        dasm.state.Invalid();
                        break;
                    }
                }
                var instr = dasm.state.MakeInstruction();

                return(instr);
            }
示例#8
0
            public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
            {
                DumpMaskedInstruction(wInstr, 0, this.mnemonic);
                dasm.state.iclass     = iclass;
                dasm.state.mnemonic   = this.mnemonic;
                dasm.state.vectorData = this.vectorData;
                for (int i = 0; i < mutators.Length; ++i)
                {
                    if (!mutators[i](wInstr, dasm))
                    {
                        dasm.state.Invalid();
                        break;
                    }
                }
                var instr = dasm.state.MakeInstruction();

                return(instr);
            }
示例#9
0
 public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
 {
     return(dasm.NotYetImplemented(message));
 }
示例#10
0
 public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
 {
     return(decode(wInstr, dasm).Decode(wInstr, dasm));
 }
示例#11
0
 public abstract AArch32Instruction Decode(uint wInstr, A32Disassembler dasm);
示例#12
0
 public override AArch32Instruction Decode(uint wInstr, A32Disassembler dasm)
 {
     Debug.Print("NYI: {0}", message);
     return(dasm.NotYetImplemented(message, wInstr));
 }