public override XtensaInstruction Decode(XtensaDisassembler dasm) { return(new XtensaInstruction { Opcode = Opcodes.extui, Operands = new MachineOperand[] { dasm.GetAluRegister(dasm.state.r), dasm.GetAluRegister(dasm.state.t), ImmediateOperand.Byte((byte)((dasm.state.s | ((dasm.state.op1 & 1) << 4)))), ImmediateOperand.Byte((byte)(dasm.state.op2 + 1)) } }); }
public override XtensaInstruction Decode(XtensaDisassembler dasm) { return(new XtensaInstruction { Opcode = this.opcode, Operands = new MachineOperand[] { dasm.GetAluRegister(dasm.state.s), ImmediateOperand.Byte((byte)(((dasm.state.r & 1) << 4) | dasm.state.t)), dasm.JumpOffset(dasm.state.imm8) } }); }
public override XtensaInstruction Decode(XtensaDisassembler dasm) { var n = dasm.state.r | ((dasm.state.t & 0x3) << 4); var dst = dasm.JumpOffset((byte)n); // this is a 2-byte instruction, so back up one byte. dasm.rdr.Offset -= 1; return(new XtensaInstruction { Opcode = opcode, Operands = new MachineOperand[] { dasm.GetAluRegister(dasm.state.s), dst, } }); }
public override XtensaInstruction Decode(XtensaDisassembler dasm) { int shoff = dasm.state.imm12; if (shoff > 0x7FF) { shoff |= ~0x7FF; } var dst = AddressOperand.Ptr32((uint) ((int)dasm.state.addr.ToUInt32() + 4 + shoff)); return(new XtensaInstruction { Opcode = opcode, Operands = new MachineOperand[] { dasm.GetAluRegister(dasm.state.s), dst, } }); }
public override XtensaInstruction Decode(XtensaDisassembler dasm) { var n = dasm.state.r | ((dasm.state.t & 0x7) << 4) | (((dasm.state.t & 0x6) == 0x6) ? ~0x1F : 0); var imm = ImmediateOperand.SByte((sbyte)n); // this is a 2-byte instruction, so back up one byte. dasm.rdr.Offset -= 1; return(new XtensaInstruction { Opcode = Opcodes.movi_n, Operands = new MachineOperand[] { dasm.GetAluRegister(dasm.state.s), imm, } }); }