Exemplo n.º 1
0
        /// <summary>
        /// Gets an instruction representing a load-by-value from the given argument.
        /// </summary>
        /// <param name="argument">argument to load</param>
        /// <returns>Load instruction</returns>
        public static MsilInstruction AsValueLoad(this MsilArgument argument)
        {
            switch (argument.Position)
            {
            case 0:
                return(new MsilInstruction(OpCodes.Ldarg_0));

            case 1:
                return(new MsilInstruction(OpCodes.Ldarg_1));

            case 2:
                return(new MsilInstruction(OpCodes.Ldarg_2));

            case 3:
                return(new MsilInstruction(OpCodes.Ldarg_3));

            default:
                return(new MsilInstruction(argument.Position < 0xFF ? OpCodes.Ldarg_S : OpCodes.Ldarg).InlineValue(argument));
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Gets an instruction representing a load-by-reference from the given argument.
 /// </summary>
 /// <param name="argument">argument to load</param>
 /// <returns>Reference load instruction</returns>
 public static MsilInstruction AsReferenceLoad(this MsilArgument argument)
 {
     return(new MsilInstruction(argument.Position < 0xFF ? OpCodes.Ldarga_S : OpCodes.Ldarga).InlineValue(argument));
 }
Exemplo n.º 3
0
 /// <summary>
 /// Gets an instruction representing a store-by-value to the given argument.
 /// </summary>
 /// <param name="argument">argument to write to</param>
 /// <returns>Store instruction</returns>
 public static MsilInstruction AsValueStore(this MsilArgument argument)
 {
     return(new MsilInstruction(argument.Position < 0xFF ? OpCodes.Starg_S : OpCodes.Starg).InlineValue(argument));
 }