本文整理汇总了C#中Microsoft.CodeAnalysis.CodeGen.ILBuilder.GetBranchBlocks方法的典型用法代码示例。如果您正苦于以下问题:C# ILBuilder.GetBranchBlocks方法的具体用法?C# ILBuilder.GetBranchBlocks怎么用?C# ILBuilder.GetBranchBlocks使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.CodeGen.ILBuilder
的用法示例。
在下文中一共展示了ILBuilder.GetBranchBlocks方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DumpSwitchBlockIL
private static void DumpSwitchBlockIL(ILBuilder.SwitchBlock block, StringBuilder sb)
{
byte[] il = block.RegularInstructions.Buffer;
new ILBuilderVisualizer(block.builder.module).DumpILBlock(il, (int)block.RegularInstructionsLength, sb, SpecializedCollections.EmptyArray<ILVisualizer.HandlerSpan>(), block.Start);
// switch (N, t1, t2... tN)
// IL ==> ILOpCode.Switch < unsigned int32 > < int32 >... < int32 >
sb.Append(string.Format(" IL_{0:x4}:", block.RegularInstructionsLength + block.Start));
sb.Append(string.Format(" {0,-10}", GetInstructionName(block.BranchCode)));
sb.Append(string.Format(" IL_{0:x4}:", block.BranchesCount));
var blockBuilder = ArrayBuilder<ILBuilder.BasicBlock>.GetInstance();
block.GetBranchBlocks(blockBuilder);
foreach (var branchBlock in blockBuilder)
{
if (branchBlock == null)
{
// this happens if label is not yet marked.
sb.Append(" <unmarked label>");
}
else
{
sb.Append(string.Format(" IL_{0:x4}", branchBlock.Start));
}
}
blockBuilder.Free();
sb.AppendLine();
}