public override void Render(MachineInstructionWriter writer) { if (code == Opcode.illegal && op1 != null && writer.Platform != null) { var imm = op1 as M68kImmediateOperand; // MacOS uses invalid opcodes to invoke Macintosh Toolbox services. // We may have to generalize the Platform API to allow specifying // the opcode of the invoking instruction, to disambiguate from // "legitimate" TRAP calls. var svc = writer.Platform.FindService((int)imm.Constant.ToUInt32(), null); if (svc != null) { writer.Write(svc.Name); return; } } if (dataWidth != null) { writer.WriteOpcode(string.Format("{0}{1}", code, DataSizeSuffix(dataWidth))); } else { writer.WriteOpcode(code.ToString()); } writer.Tab(); if (op1 != null) { op1.Write(false, writer); if (op2 != null) { writer.Write(','); op2.Write(false, writer); } } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(string.Format("{0}{1}{2}", Opcode, Cond != Condition.al ? Cond.ToString() : "", OpFlags != OpFlags.None ? OpFlags.ToString().ToLower() : "")); if (Dst != null) { writer.Tab(); Write(Dst, writer); if (Update) writer.Write("!"); if (Src1 != null) { writer.Write(","); Write(Src1, writer); if (Src2 != null) { writer.Write(","); Write(Src2, writer); if (Src3 != null) { writer.Write(","); Write(Src3, writer); } } } } }
public override void Render(MachineInstructionWriter writer) { var op = string.Format("{0}{1}", opcode, setsCR0 ? "." : ""); writer.WriteOpcode(op); if (op1 != null) { writer.Tab(); op1.Write(true, writer); if (op2 != null) { writer.Write(','); op2.Write(true, writer); if (op3 != null) { writer.Write(','); op3.Write(true, writer); if (op4 != null) { writer.Write(","); op4.Write(true, writer); if (op5 != null) { writer.Write(","); op5.Write(true, writer); } } } } } }
public override void Render(MachineInstructionWriter writer) { if (instruction == null) { writer.Write("Invalid"); return; } writer.WriteOpcode(instruction.Mnemonic); var ops = instruction.ArchitectureDetail.Operands; if (ops.Length < 1) return; writer.Tab(); if (WriteRegisterSetInstruction(writer)) return; Write(ops[0], writer); if (ops.Length < 2) return; writer.Write(","); Write(ops[1], writer); if (ops.Length < 3) return; writer.Write(","); Write(ops[2], writer); if (ops.Length < 4) return; writer.Write(","); Write(ops[3], writer); }
public override void Write(bool fExplicit, MachineInstructionWriter writer) { Operand.Write(fExplicit, writer); writer.Write(","); writer.WriteOpcode(Opcode.ToString()); writer.Write(' '); Shift.Write(fExplicit, writer); }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(Code.ToString()); if (Operand != null) { writer.Tab(); Operand.Write(true, writer); } }
public override void Render(MachineInstructionWriter writer) { try { writer.WriteOpcode(mpopcodetostring[Opcode]); } catch { throw new NotImplementedException("Lolwut: " + Opcode); } }
public override void Render(MachineInstructionWriter writer) { if (Code == Opcode.ex_af) { writer.WriteOpcode("ex"); writer.Tab(); writer.Write("af,af'"); return; } writer.WriteOpcode(Code.ToString()); if (Op1 != null) { writer.Tab(); Op1.Write(true, writer); if (Op2 != null) { writer.Write(","); Op2.Write(true, writer); } } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(Opcode.ToString()); if (op1 != null) { writer.Tab(); OpToString(op1, writer); if (op2 != null) { writer.Write(","); OpToString(op2, writer); } } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(opcode.ToString()); if (operands.Length > 0) { writer.Tab(); writer.Write(operands[0].ToString()); if (operands.Length > 1) { writer.Write(","); writer.Write(operands[1].ToString()); } } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(this.Opcode.ToString()); writer.Tab(); bool sep = false; foreach (var op in Operands) { if (sep) writer.Write(','); sep = true; if (op is ImmediateOperand) writer.Write('#'); op.Write(false, writer); } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(Opcode.ToString()); if (op1 == null) return; writer.Tab(); op1.Write(false, writer); if (op2 == null) return; writer.Write(","); op2.Write(false, writer); if (op3 == null) return; writer.Write(","); op3.Write(false, writer); }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(opcode.ToString()); if (op1 != null) { writer.Tab(); op1.Write(true, writer); if (op2 != null) { writer.Write(','); op2.Write(true, writer); if (op3 != null) { writer.Write(','); op3.Write(true, writer); } } } }
public override void Render(MachineInstructionWriter writer) { string instrName; if (!instrNames.TryGetValue(Opcode, out instrName)) { instrName = Opcode.ToString(); } writer.WriteOpcode(instrName); writer.Tab(); var sep = ""; if (this.Operands != null) { foreach (var op in this.Operands) { writer.Write(sep); op.Write(false, writer); sep = ","; } } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(instruction.Mnemonic); var ops = Internal.ArchitectureDetail.Operands; if (ops.Length < 1) return; writer.Tab(); Write(ops[0], writer); if (ops.Length < 2) return; writer.Write(","); Write(ops[1], writer); if (ops.Length < 3) return; writer.Write(","); Write(ops[2], writer); if (ops.Length < 4) return; writer.Write(","); Write(ops[3], writer); }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode( string.Format("{0}{1}", Opcode.ToString(), Annul ? ",a" : "")); if (Op1 != null) { writer.Tab(); Write(Op1, writer); if (Op2 != null) { writer.Write(','); Write(Op2, writer); if (Op3 != null) { writer.Write(','); Write(Op3, writer); } } } }
private void WriteMnemonic(MachineInstructionWriter writer) { var name = this.Mnemonic.ToString().Replace('_', '.'); writer.WriteOpcode(name); }
public override void Render(MachineInstructionWriter writer, MachineInstructionWriterOptions options) { writer.WriteOpcode(Opcode.ToString()); writer.Tab(); Operands[0].Write(writer, options); }
public override void Render(MachineInstructionWriter writer, MachineInstructionWriterOptions options) { writer.WriteOpcode(operation.ToString().ToLower()); }
public override void Render(MachineInstructionWriter writer, MachineInstructionWriterOptions options) { writer.WriteOpcode(Mnemonic.ToString()); RenderOperands(writer, options); }
private void WriteImmShift(string op, int value, MachineInstructionWriter writer) { writer.Write(","); writer.WriteOpcode(op); WriteImmediateValue(value, writer); }
public override void Render(MachineInstructionWriter writer, MachineInstructionWriterOptions options) { writer.WriteOpcode(mpopcodetostring[Opcode]); }
private void RenderMnemonic(MachineInstructionWriter writer) { writer.WriteOpcode(Mnemonic.ToString()); }
public override void Render(MachineInstructionWriter writer, MachineInstructionWriterOptions options) { if (repPrefix == 3) { writer.WriteOpcode("rep"); writer.WriteChar(' '); } else if (repPrefix == 2) { writer.WriteOpcode("repne"); writer.WriteChar(' '); } // Get opcode. string s = code.ToString(); switch (code) { case Opcode.cwd: if (dataWidth == PrimitiveType.Word32) { s = "cdq"; } break; case Opcode.cbw: if (dataWidth == PrimitiveType.Word32) { s = "cwde"; } break; case Opcode.ins: case Opcode.outs: case Opcode.movs: case Opcode.cmps: case Opcode.stos: case Opcode.lods: case Opcode.scas: switch (dataWidth.Size) { case 1: s += 'b'; break; case 2: s += 'w'; break; case 4: s += 'd'; break; case 8: s += 'q'; break; default: throw new ArgumentOutOfRangeException(); } break; } writer.WriteOpcode(s); if (NeedsExplicitMemorySize()) { options |= MachineInstructionWriterOptions.ExplicitOperandSize; } if (Operands >= 1) { writer.Tab(); Write(op1, writer, options); if (Operands >= 2) { writer.WriteChar(','); Write(op2, writer, options); if (Operands >= 3) { writer.WriteString(","); Write(op3, writer, options); } } } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode(operation.ToString().ToLower()); }
public override void Write(MachineInstructionWriter writer, MachineInstructionWriterOptions options) { writer.WriteOpcode(Condition.ToString()); }
private void WriteImmShift(string op, int value, MachineInstructionWriter writer) { writer.Write(","); writer.WriteOpcode(op); writer.Write(" #"); WriteImmediateValue(value, writer); }
private void WriteRegShift(string op, int value, MachineInstructionWriter writer) { writer.Write(","); writer.WriteOpcode(op); writer.Write(' '); writer.Write(A32Registers.RegisterByCapstoneID[(ArmRegister)value].Name); }
public override void Render(MachineInstructionWriter writer) { // Get opcode. string s = code.ToString(); switch (code) { case Opcode.cwd: if (dataWidth == PrimitiveType.Word32) { s = "cdq"; } break; case Opcode.cbw: if (dataWidth == PrimitiveType.Word32) { s = "cwde"; } break; case Opcode.ins: case Opcode.outs: case Opcode.movs: case Opcode.cmps: case Opcode.stos: case Opcode.lods: case Opcode.scas: switch (dataWidth.Size) { case 1: s += 'b'; break; case 2: s += 'w'; break; case 4: s += 'd'; break; default: throw new ArgumentOutOfRangeException(); } break; } writer.WriteOpcode(s); writer.Tab(); bool fExplicit = NeedsExplicitMemorySize(); if (Operands >= 1) { op1.Write(fExplicit, writer); if (Operands >= 2) { writer.Write(','); op2.Write(fExplicit, writer); if (Operands >= 3) { writer.Write(","); op3.Write(fExplicit, writer); } } } }
public override void Render(MachineInstructionWriter writer) { writer.WriteOpcode("opcode.l"); }
public override void Render(MachineInstructionWriter writer) { string name; if (!opcodeNames.TryGetValue(opcode, out name)) { name = opcode.ToString(); } writer.WriteOpcode(name); if (op1 == null) return; writer.Tab(); WriteOp(op1, writer); if (op2 == null) return; writer.Write(','); WriteOp(op2, writer); if (op3 == null) return; writer.Write(','); WriteOp(op3, writer); }
public override void Render(MachineInstructionWriter writer, MachineInstructionWriterOptions options) { writer.WriteOpcode("opcode.l"); }
public override void Render(MachineInstructionWriter writer) { // Get opcode. string s = code.ToString(); switch (code) { case Opcode.cwd: if (dataWidth == PrimitiveType.Word32) { s = "cdq"; } break; case Opcode.cbw: if (dataWidth == PrimitiveType.Word32) { s = "cwde"; } break; case Opcode.ins: case Opcode.outs: case Opcode.movs: case Opcode.cmps: case Opcode.stos: case Opcode.lods: case Opcode.scas: switch (dataWidth.Size) { case 1: s += 'b'; break; case 2: s += 'w'; break; case 4: s += 'd'; break; case 8: s += 'q'; break; default: throw new ArgumentOutOfRangeException(); } break; } writer.WriteOpcode(s); writer.Tab(); bool fExplicit = NeedsExplicitMemorySize(); if (Operands >= 1) { op1.Write(fExplicit, writer); if (Operands >= 2) { writer.Write(','); op2.Write(fExplicit, writer); if (Operands >= 3) { writer.Write(","); op3.Write(fExplicit, writer); } } } }