/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="statusRegister">if set to <c>true</c> [update status].</param> /// <param name="condition">The condition.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> /// <param name="operand3">The operand3.</param> public void SetInstruction(BaseInstruction instruction, StatusRegister statusRegister, Operand result, Operand operand1, Operand operand2, Operand operand3) { Node.SetInstruction(instruction, statusRegister, result, operand1, operand2, operand3); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> public void SetInstruction(BaseInstruction instruction, ConditionCode condition, Operand result, Operand operand1) { Node.SetInstruction(instruction, condition, result, operand1); }
/// <summary> /// Determines whether [is instruction move] [the specified instruction]. /// </summary> /// <param name="instruction">The instruction.</param> /// <returns></returns> public override bool IsInstructionMove(BaseInstruction instruction) { return (instruction == X86.Mov || instruction == X86.Movsd || instruction == X86.Movss); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="operandCount">The operand count.</param> /// <param name="resultCount">The result count.</param> public void SetInstruction(BaseInstruction instruction, int operandCount, byte resultCount) { Node.SetInstruction(instruction, operandCount, resultCount); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> public void SetInstruction(BaseInstruction instruction, Operand result) { Node.SetInstruction(instruction, result); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="updateStatus">if set to <c>true</c> [update status].</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> public void AppendInstruction(BaseInstruction instruction, bool updateStatus, Operand result, Operand operand1, Operand operand2) { AppendInstruction(); Node.SetInstruction(instruction, updateStatus, result, operand1, operand2); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="result2">The result2.</param> public void AppendInstruction2(BaseInstruction instruction, Operand result, Operand result2) { AppendInstruction(); Node.SetInstruction2(instruction, result, result2); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> /// <param name="operand3">The operand3.</param> public void AppendInstruction(BaseInstruction instruction, Operand result, Operand operand1, Operand operand2, Operand operand3) { AppendInstruction(); Node.SetInstruction(instruction, result, operand1, operand2, operand3); }
/// <summary> /// Replaces the instruction only. /// </summary> /// <param name="instruction">The instruction.</param> public void ReplaceInstruction(BaseInstruction instruction) { Instruction = instruction; }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> /// <param name="updateStatus">if set to <c>true</c> [update status].</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> public void AppendInstruction(BaseInstruction instruction, ConditionCode condition, bool updateStatus, Operand result, Operand operand1) { AppendInstruction(); Node.SetInstruction(instruction, condition, updateStatus, result, operand1); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> public void AppendInstruction(BaseInstruction instruction, ConditionCode condition, Operand result, Operand operand1, Operand operand2) { AppendInstruction(); Node.SetInstruction(instruction, condition, result, operand1, operand2); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operands">The operands.</param> public void AppendInstruction(BaseInstruction instruction, Operand result, Operand operand1, List <Operand> operands) { AppendInstruction(); Node.SetInstruction(instruction, result, operand1, operands); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="statusRegister">if set to <c>true</c> [update status].</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> public void AppendInstruction(BaseInstruction instruction, StatusRegister statusRegister, Operand result, Operand operand1, Operand operand2) { AppendInstruction(); Node.SetInstruction(instruction, statusRegister, result, operand1, operand2); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="result2">The result2.</param> /// <param name="operand1">The operand1.</param> public void AppendInstruction2(BaseInstruction instruction, Operand result, Operand result2, Operand operand1) { AppendInstruction(); Node.SetInstruction2(instruction, result, result2, operand1); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="block1">The block1.</param> /// <param name="block2">The block2.</param> public void AppendInstruction(BaseInstruction instruction, BasicBlock block1, BasicBlock block2) { AppendInstruction(); Node.SetInstruction(instruction, block1, block2); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> public void SetInstruction(BaseInstruction instruction) { Node.SetInstruction(instruction); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> /// <param name="block">The block.</param> public void AppendInstruction(BaseInstruction instruction, ConditionCode condition, BasicBlock block) { AppendInstruction(); Node.SetInstruction(instruction, condition, block); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> public void AppendInstruction(BaseInstruction instruction, ConditionCode condition, Operand result, Operand operand1, Operand operand2) { AppendInstruction(); Node.SetInstruction(instruction, condition, result, operand1, operand2); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> public void SetInstruction(BaseInstruction instruction, ConditionCode condition) { Node.SetInstruction(instruction, condition); }
/// <summary> /// Replaces the instruction only. /// </summary> /// <param name="instruction">The instruction.</param> public void ReplaceInstructionOnly(BaseInstruction instruction) { Instruction = instruction; }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> /// <param name="block">The block.</param> public void SetInstruction(BaseInstruction instruction, ConditionCode condition, BasicBlock block) { Node.SetInstruction(instruction, condition, block); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> public void SetInstruction(BaseInstruction instruction, bool updateStatus, Operand result, Operand operand1) { Node.SetInstruction(instruction, updateStatus, result, operand1); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="updateStatus">if set to <c>true</c> [update status].</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> public void SetInstruction(BaseInstruction instruction, bool updateStatus, Operand result, Operand operand1) { Node.SetInstruction(instruction, updateStatus, result, operand1); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> /// <param name="updateStatus">if set to <c>true</c> [update status].</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> public void SetInstruction(BaseInstruction instruction, ConditionCode condition, bool updateStatus, Operand result, Operand operand1, Operand operand2) { Node.SetInstruction(instruction, condition, updateStatus, result, operand1, operand2); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operands">The operands.</param> public void SetInstruction(BaseInstruction instruction, Operand result, Operand operand1, IList <Operand> operands) { Node.SetInstruction(instruction, result, operand1, operands); }
/// <summary> /// Clears this instance. /// </summary> public void Clear() { this.Label = -1; this.Instruction = null; this.Operand1 = null; this.Operand2 = null; this.Operand3 = null; this.Result = null; this.Result2 = null; this.packed = 0; this.additionalOperands = null; this.BranchTargets = null; this.Other = null; this.BranchHint = false; this.ConditionCode = ConditionCode.Undefined; }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="result2">The result2.</param> public void SetInstruction2(BaseInstruction instruction, Operand result, Operand result2) { Node.SetInstruction2(instruction, result, result2); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="target">The target.</param> public void AppendInstruction(BaseInstruction instruction, MosaMethod target) { AppendInstruction(); Node.SetInstruction(instruction, target); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="result2">The result2.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> /// <param name="operand3">The operand3.</param> public void SetInstruction2(BaseInstruction instruction, Operand result, Operand result2, Operand operand1, Operand operand2, Operand operand3) { Node.SetInstruction2(instruction, result, result2, operand1, operand2, operand3); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> public void AppendInstruction(BaseInstruction instruction, ConditionCode condition) { AppendInstruction(); Node.SetInstruction(instruction, condition); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> public void AppendInstruction(BaseInstruction instruction, Operand result, Operand operand1) { AppendInstruction(); Node.SetInstruction(instruction, result, operand1); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="condition">The condition.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> /// <param name="block">The block.</param> public void SetInstruction(BaseInstruction instruction, ConditionCode condition, Operand result, Operand operand1, Operand operand2, BasicBlock block) { Node.SetInstruction(instruction, condition, result, operand1, operand2, block); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="size">The size.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> /// <param name="operand3">The operand3.</param> /// <param name="operand4">The operand4.</param> public void AppendInstruction(BaseInstruction instruction, InstructionSize size, Operand result, Operand operand1, Operand operand2, Operand operand3, Operand operand4) { AppendInstruction(); Node.SetInstruction(instruction, size, result, operand1, operand2, operand3, operand4); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> /// <param name="operand3">The operand3.</param> /// <param name="operand4">The operand4.</param> public void SetInstruction(BaseInstruction instruction, Operand result, Operand operand1, Operand operand2, Operand operand3, Operand operand4) { Node.SetInstruction(instruction, result, operand1, operand2, operand3, operand4); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="result2">The result2.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> /// <param name="operand3">The operand3.</param> public void AppendInstruction2(BaseInstruction instruction, Operand result, Operand result2, Operand operand1, Operand operand2, Operand operand3) { AppendInstruction(); Node.SetInstruction2(instruction, result, result2, operand1, operand2, operand3); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> public void AppendInstruction(BaseInstruction instruction) { AppendInstruction(); Node.SetInstruction(instruction); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="operandCount">The operand count.</param> /// <param name="resultCount">The result count.</param> public void AppendInstruction(BaseInstruction instruction, byte operandCount, byte resultCount) { AppendInstruction(); Node.SetInstruction(instruction, operandCount, resultCount); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="target">The target.</param> public void SetInstruction(BaseInstruction instruction, MosaMethod target) { Node.SetInstruction(instruction, target); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="block">The block.</param> public void AppendInstruction(BaseInstruction instruction, Operand result, BasicBlock block) { AppendInstruction(); Node.SetInstruction(instruction, result, block); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="size">The size.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> public void SetInstruction(BaseInstruction instruction, InstructionSize size, Operand result, Operand operand1) { Node.SetInstruction(instruction, size, result, operand1); }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> public void SetInstruction(BaseInstruction instruction, Operand result, Operand operand1, Operand operand2) { Node.SetInstruction(instruction, result, operand1, operand2); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="result">The result.</param> public void AppendInstruction(BaseInstruction instruction, Operand result) { AppendInstruction(); Node.SetInstruction(instruction, result); }
private bool IsCommutative(BaseInstruction instruction) { return (instruction == X86.Addsd || instruction == X86.Addss || instruction == X86.Mulsd || instruction == X86.Mulss); }
/// <summary> /// Appends the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="updateStatus">if set to <c>true</c> [update status].</param> /// <param name="result">The result.</param> public void AppendInstruction(BaseInstruction instruction, bool updateStatus, Operand result) { AppendInstruction(); Node.SetInstruction(instruction, updateStatus, result); }
/// <summary> /// Determines whether [is instruction move] [the specified instruction]. /// </summary> /// <param name="instruction">The instruction.</param> /// <returns></returns> public abstract bool IsInstructionMove(BaseInstruction instruction);
/// <summary> /// Determines whether [is instruction move] [the specified instruction]. /// </summary> /// <param name="instruction">The instruction.</param> /// <returns></returns> public override bool IsInstructionMove(BaseInstruction instruction) { // TODO return false; }
/// <summary> /// Sets the instruction. /// </summary> /// <param name="instruction">The instruction.</param> /// <param name="statusRegister">if set to <c>true</c> [update status].</param> /// <param name="condition">The condition.</param> /// <param name="result">The result.</param> /// <param name="operand1">The operand1.</param> /// <param name="operand2">The operand2.</param> public void SetInstruction(BaseInstruction instruction, StatusRegister statusRegister, ConditionCode condition, Operand result, Operand operand1, Operand operand2) { Node.SetInstruction(instruction, statusRegister, condition, result, operand1, operand2); }