internal static bool InmZext(uint uInstr, YmpDisassembler dasm) { if (!dasm.rdr.TryReadBeUInt32(out uint nm)) { return(false); } dasm.ops.Add(ImmediateOperand.Word64(nm)); return(true); }
internal static bool Jijkm(uint uInstr, YmpDisassembler dasm) { if (!dasm.rdr.TryReadBeUInt16(out ushort n)) { return(false); } var uAddr = ((uInstr & 0x1FF) << 16) | n; dasm.ops.Add(AddressOperand.Ptr32(uAddr)); return(true); }
internal static bool Jnm(uint uInstr, YmpDisassembler dasm) { if (!dasm.rdr.TryReadBeUInt16(out ushort m)) { return(false); } if (!dasm.rdr.TryReadBeUInt16(out ushort n)) { return(false); } uint nm = n; nm = nm << 16 | m; dasm.ops.Add(AddressOperand.Ptr32(nm)); return(true); }
public override CrayInstruction Decode(uint wInstr, YmpDisassembler dasm) { foreach (var m in mutators) { if (!m(wInstr, dasm)) { return(dasm.CreateInvalidInstruction()); } } var instr = new CrayInstruction { InstructionClass = iclass, Mnemonic = mnemonic, Operands = dasm.ops.ToArray() }; return(instr); }
internal static bool Imm_1(uint word, YmpDisassembler dasm) { dasm.ops.Add(ImmediateOperand.Word64(-1L)); return(true); }