Example #1
0
 /// <summary>
 /// Emits the data processing instruction.
 /// </summary>
 /// <param name="node">The node.</param>
 /// <param name="emitter">The emitter.</param>
 /// <param name="opcode">The opcode.</param>
 /// <exception cref="InvalidCompilerException"></exception>
 protected void EmitDataProcessingInstruction(InstructionNode node, ARMv6CodeEmitter emitter, byte opcode)
 {
     if (node.Operand2.IsCPURegister && node.Operand3.IsShift)
     {
         emitter.EmitInstructionWithRegister(node.ConditionCode, opcode, node.UpdateStatus, node.Operand1.Register.Index, node.Result.Register.Index, node.Operand3.ShiftType, node.Operand2.Register.Index);
     }
     else if (node.Operand2.IsConstant && node.Operand3.IsConstant)
     {
         emitter.EmitInstructionWithImmediate(node.ConditionCode, opcode, node.UpdateStatus, node.Operand1.Register.Index, node.Result.Register.Index, (int)node.Operand2.ConstantSignedLongInteger, (int)node.Operand3.ConstantSignedLongInteger);
     }
     else
     {
         throw new InvalidCompilerException();
     }
 }