File indexing completed on 2024-05-19 15:23:16
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>test.il</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Common Intermediate Language (CIL)) - Theme (Breeze Dark)"/> 0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre> 0007 <span style="color:#7a7c7d;">// Test file for the Common Intermediate Language</span> 0008 0009 <span style="color:#7a7c7d;">/*</span> 0010 <span style="color:#7a7c7d;"> multi line comment</span> 0011 <span style="color:#7a7c7d;">*/</span> 0012 0013 <span style="color:#7a7c7d;">// examples from Wikipedia</span> 0014 .<span style="color:#2980b9;">assembly</span> Hello {} 0015 .<span style="color:#2980b9;">assembly</span> <span style="font-weight:bold;">extern</span> mscorlib {} 0016 .<span style="font-weight:bold;">method</span> <span style="font-weight:bold;">static</span> <span style="color:#2980b9;">void</span> Main() 0017 { 0018 .<span style="color:#2980b9;">entrypoint</span> 0019 .<span style="color:#2980b9;">maxstack</span> 1 0020 <span style="color:#8e44ad;">ldstr</span> <span style="color:#f44f4f;">"Hello, world!"</span> 0021 <span style="color:#8e44ad;">call</span> <span style="color:#2980b9;">void</span> [mscorlib]System.Console::WriteLine(<span style="color:#2980b9;">string</span>) 0022 <span style="color:#8e44ad;">ret</span> 0023 } 0024 0025 .<span style="font-weight:bold;">method</span> <span style="font-weight:bold;">private</span> hidebysig <span style="font-weight:bold;">static</span> <span style="color:#2980b9;">void</span> Main(<span style="color:#2980b9;">string</span>[] args) <span style="font-weight:bold;">cil</span> <span style="font-weight:bold;">managed</span> 0026 { 0027 .<span style="color:#2980b9;">entrypoint</span> 0028 .<span style="color:#2980b9;">maxstack</span> 2 0029 .<span style="color:#2980b9;">locals</span> init (<span style="color:#2980b9;">int32</span> V_0, 0030 <span style="color:#2980b9;">int32</span> V_1) 0031 0032 <span style="color:#8e44ad;">ldc</span>.i4.2 0033 <span style="color:#8e44ad;">stloc</span>.0 0034 <span style="color:#8e44ad;">br</span>.s IL_001f 0035 <span style="color:#27ae60;">IL_0004:</span> <span style="color:#8e44ad;">ldc</span>.i4.2 0036 <span style="color:#8e44ad;">stloc</span>.1 0037 <span style="color:#8e44ad;">br</span>.s IL_0011 0038 <span style="color:#27ae60;">IL_0008:</span> <span style="color:#8e44ad;">ldloc</span>.0 0039 <span style="color:#8e44ad;">ldloc</span>.1 0040 <span style="color:#8e44ad;">rem</span> 0041 <span style="color:#8e44ad;">brfalse</span>.s IL_001b 0042 <span style="color:#8e44ad;">ldloc</span>.1 0043 <span style="color:#8e44ad;">ldc</span>.i4.1 0044 <span style="color:#8e44ad;">add</span> 0045 <span style="color:#8e44ad;">stloc</span>.1 0046 <span style="color:#27ae60;">IL_0011:</span> <span style="color:#8e44ad;">ldloc</span>.1 0047 <span style="color:#8e44ad;">ldloc</span>.0 0048 <span style="color:#8e44ad;">blt</span>.s IL_0008 0049 <span style="color:#8e44ad;">ldloc</span>.0 0050 <span style="color:#8e44ad;">call</span> <span style="color:#2980b9;">void</span> [mscorlib]System.Console::WriteLine(<span style="color:#2980b9;">int32</span>) 0051 <span style="color:#27ae60;">IL_001b:</span> <span style="color:#8e44ad;">ldloc</span>.0 0052 <span style="color:#8e44ad;">ldc</span>.i4.1 0053 <span style="color:#8e44ad;">add</span> 0054 <span style="color:#8e44ad;">stloc</span>.0 0055 <span style="color:#27ae60;">IL_001f:</span> <span style="color:#8e44ad;">ldloc</span>.0 0056 <span style="color:#8e44ad;">ldc</span>.i4 0x3e8 0057 <span style="color:#8e44ad;">blt</span>.s IL_0004 0058 <span style="color:#8e44ad;">ret</span> 0059 } 0060 0061 .<span style="font-weight:bold;">method</span> <span style="color:#2980b9;">assembly</span> <span style="font-weight:bold;">static</span> <span style="color:#2980b9;">void</span> modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl) 0062 test_pointer_operations(<span style="color:#2980b9;">int32</span> param) <span style="font-weight:bold;">cil</span> <span style="font-weight:bold;">managed</span> 0063 { 0064 .vtentry 1 : 1 0065 <span style="color:#7a7c7d;">// Code size 44 (0x2c)</span> 0066 .<span style="color:#2980b9;">maxstack</span> 2 0067 .<span style="color:#2980b9;">locals</span> ([0] <span style="color:#2980b9;">int32</span>* ptr, 0068 [1] valuetype A* V_1, 0069 [2] valuetype A* a, 0070 [3] <span style="color:#2980b9;">int32</span> k) 0071 <span style="color:#7a7c7d;">// k = 0;</span> 0072 <span style="color:#27ae60;">IL_0000:</span> <span style="color:#8e44ad;">ldc</span>.i4.0 0073 <span style="color:#27ae60;">IL_0001:</span> <span style="color:#8e44ad;">stloc</span>.3 0074 <span style="color:#7a7c7d;">// ptr = &k;</span> 0075 <span style="color:#27ae60;">IL_0002:</span> <span style="color:#8e44ad;">ldloca</span>.s k <span style="color:#7a7c7d;">// load local's address instruction</span> 0076 <span style="color:#27ae60;">IL_0004:</span> <span style="color:#8e44ad;">stloc</span>.0 0077 <span style="color:#7a7c7d;">// *ptr = 1;</span> 0078 <span style="color:#27ae60;">IL_0005:</span> <span style="color:#8e44ad;">ldloc</span>.0 0079 <span style="color:#27ae60;">IL_0006:</span> <span style="color:#8e44ad;">ldc</span>.i4.1 0080 <span style="color:#27ae60;">IL_0007:</span> <span style="color:#8e44ad;">stind</span>.i4 <span style="color:#7a7c7d;">// indirection instruction</span> 0081 <span style="color:#7a7c7d;">// ptr = &param</span> 0082 <span style="color:#27ae60;">IL_0008:</span> <span style="color:#8e44ad;">ldarga</span>.s param <span style="color:#7a7c7d;">// load parameter's address instruction</span> 0083 <span style="color:#27ae60;">IL_000a:</span> <span style="color:#8e44ad;">stloc</span>.0 0084 <span style="color:#7a7c7d;">// *ptr = 2</span> 0085 <span style="color:#27ae60;">IL_000b:</span> <span style="color:#8e44ad;">ldloc</span>.0 0086 <span style="color:#27ae60;">IL_000c:</span> <span style="color:#8e44ad;">ldc</span>.i4.2 0087 <span style="color:#27ae60;">IL_000d:</span> <span style="color:#8e44ad;">stind</span>.i4 0088 <span style="color:#7a7c7d;">// a = new A;</span> 0089 <span style="color:#27ae60;">IL_000e:</span> <span style="color:#8e44ad;">ldloca</span>.s a 0090 <span style="color:#27ae60;">IL_0010:</span> <span style="color:#8e44ad;">call</span> valuetype A* modopt([mscorlib]System.Runtime.CompilerServices.CallConvThiscall) 'A.{ctor}'(valuetype A* modopt([mscorlib]System.Runtime.CompilerServices.IsConst) modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) 0091 <span style="color:#27ae60;">IL_0015:</span> <span style="color:#8e44ad;">pop</span> 0092 <span style="color:#7a7c7d;">// ptra = &a;</span> 0093 <span style="color:#27ae60;">IL_0016:</span> <span style="color:#8e44ad;">ldloca</span>.s a 0094 <span style="color:#27ae60;">IL_0018:</span> <span style="color:#8e44ad;">stloc</span>.1 0095 <span style="color:#7a7c7d;">// ptra->meth();</span> 0096 <span style="color:#27ae60;">IL_0019:</span> <span style="color:#8e44ad;">ldloc</span>.1 0097 <span style="color:#27ae60;">IL_001a:</span> <span style="color:#8e44ad;">dup</span> 0098 <span style="color:#27ae60;">IL_001b:</span> <span style="color:#8e44ad;">ldind</span>.i4 <span style="color:#7a7c7d;">// reading the VMT for virtual call</span> 0099 <span style="color:#27ae60;">IL_001c:</span> <span style="color:#8e44ad;">ldind</span>.i4 0100 <span style="color:#27ae60;">IL_001d:</span> <span style="color:#8e44ad;">calli</span> unmanaged stdcall <span style="color:#2980b9;">void</span> modopt([mscorlib]System.Runtime.CompilerServices.CallConvStdcall)(native int) 0101 <span style="color:#27ae60;">IL_0022:</span> <span style="color:#8e44ad;">ret</span> 0102 } <span style="color:#7a7c7d;">// end of method 'Global Functions'::test_pointer_operations</span> 0103 </pre></body></html>