diff options
Diffstat (limited to 'mcs/ilasm/codegen/LdcInstr.cs')
-rw-r--r-- | mcs/ilasm/codegen/LdcInstr.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/mcs/ilasm/codegen/LdcInstr.cs b/mcs/ilasm/codegen/LdcInstr.cs new file mode 100644 index 00000000000..186da7a285e --- /dev/null +++ b/mcs/ilasm/codegen/LdcInstr.cs @@ -0,0 +1,54 @@ +// +// Mono.ILASM.LdcInstr +// +// Author(s): +// Jackson Harper (Jackson@LatitudeGeo.com) +// +// (C) 2003 Jackson Harper, All rights reserved +// + + +using System; + +namespace Mono.ILASM { + + public class LdcInstr : IInstr { + + private MiscInstr op; + private double d_operand; + private long l_operand; + + public LdcInstr (MiscInstr op, double operand, Location loc) + : base (loc) + { + this.op = op; + d_operand = operand; + } + + public LdcInstr (MiscInstr op, long operand, Location loc) + : base (loc) + { + this.op = op; + l_operand = operand; + } + + public override void Emit (CodeGen code_gen, MethodDef meth, + PEAPI.CILInstructions cil) + { + switch (op) { + case MiscInstr.ldc_r8: + cil.ldc_r8 (d_operand); + break; + case MiscInstr.ldc_r4: + cil.ldc_r4 ((float) d_operand); + break; + case MiscInstr.ldc_i8: + cil.ldc_i8 (l_operand); + break; + } + } + + } + +} + |