本文整理汇总了C#中System.Reflection.Emit.CodeGenerator.EmitAutoGlobalLoadAddress方法的典型用法代码示例。如果您正苦于以下问题:C# CodeGenerator.EmitAutoGlobalLoadAddress方法的具体用法?C# CodeGenerator.EmitAutoGlobalLoadAddress怎么用?C# CodeGenerator.EmitAutoGlobalLoadAddress使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.Emit.CodeGenerator
的用法示例。
在下文中一共展示了CodeGenerator.EmitAutoGlobalLoadAddress方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Emit
/// <include file='Doc/Nodes.xml' path='doc/method[@name="Emit"]/*'/>
internal override void Emit(CodeGenerator codeGenerator)
{
Statistics.AST.AddNode("GlobalStmt");
foreach (SimpleVarUse variable in varList)
{
variable.Emit(codeGenerator);
// CALL Operators.GetItemRef(<string variable name>, ref context.AutoGlobals.GLOBALS);
variable.EmitName(codeGenerator);
codeGenerator.EmitAutoGlobalLoadAddress(new VariableName(AutoGlobals.GlobalsName));
codeGenerator.IL.Emit(OpCodes.Call, Methods.Operators.GetItemRef.String);
variable.EmitAssign(codeGenerator);
}
}
示例2: EmitLoadAddress
/// <summary>
/// Loads an address of a variable on the stack.
/// </summary>
internal override void EmitLoadAddress(CodeGenerator codeGenerator)
{
ILEmitter il = codeGenerator.IL;
if (codeGenerator.VariableIsAutoGlobal(varName))
{
codeGenerator.EmitAutoGlobalLoadAddress(varName);
return;
}
if (codeGenerator.OptimizedLocals)
{
// Template: for DirectVarUse
// ***** // If the specidied variable is of type PhpReference
// ldloc loc
// ldflda PhpReference.value
// ***** // Otherwise
// ldloca loc
// *****
VariablesTable.Entry entry = codeGenerator.CurrentVariablesTable[varName];
if (entry.IsPhpReference)
{
// Load variable (of type PhpReference) from IPlace
entry.Variable.EmitLoad(il);
// ... and get address (ref) of its Value field
il.Emit(OpCodes.Ldflda, Fields.PhpReference_Value);
}
else
// Load address of variable from IPlace
entry.Variable.EmitLoadAddress(il);
return;
}
else
{
// Template:
// object Operators.GetVariableUnchecked(IDictionary table, string name) //returns variable value
this.LoadTabledVariableAddress(codeGenerator);
}
}