File indexing completed on 2024-05-12 04:02:09

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 Light)"/>
0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
0007 <span style="color:#898887">// Test file for the Common Intermediate Language</span>
0008 
0009 <span style="color:#898887">/*</span>
0010 <span style="color:#898887">  multi line comment</span>
0011 <span style="color:#898887">*/</span>
0012 
0013 <span style="color:#898887">// examples from Wikipedia</span>
0014 .<span style="color:#0057ae">assembly</span> Hello {}
0015 .<span style="color:#0057ae">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:#0057ae">void</span> Main()
0017 {
0018      .<span style="color:#0057ae">entrypoint</span>
0019      .<span style="color:#0057ae">maxstack</span> 1
0020      <span style="color:#644a9b">ldstr</span> <span style="color:#bf0303">"Hello, world!"</span>
0021      <span style="color:#644a9b">call</span> <span style="color:#0057ae">void</span> [mscorlib]System.Console::WriteLine(<span style="color:#0057ae">string</span>)
0022      <span style="color:#644a9b">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:#0057ae">void</span> Main(<span style="color:#0057ae">string</span>[] args) <span style="font-weight:bold">cil</span> <span style="font-weight:bold">managed</span>
0026 {
0027     .<span style="color:#0057ae">entrypoint</span>
0028     .<span style="color:#0057ae">maxstack</span>  2
0029     .<span style="color:#0057ae">locals</span> init (<span style="color:#0057ae">int32</span> V_0,
0030                   <span style="color:#0057ae">int32</span> V_1)
0031 
0032               <span style="color:#644a9b">ldc</span>.i4.2
0033               <span style="color:#644a9b">stloc</span>.0
0034               <span style="color:#644a9b">br</span>.s       IL_001f
0035     <span style="color:#006e28">IL_0004:</span>  <span style="color:#644a9b">ldc</span>.i4.2
0036               <span style="color:#644a9b">stloc</span>.1
0037               <span style="color:#644a9b">br</span>.s       IL_0011
0038     <span style="color:#006e28">IL_0008:</span>  <span style="color:#644a9b">ldloc</span>.0
0039               <span style="color:#644a9b">ldloc</span>.1
0040               <span style="color:#644a9b">rem</span>
0041               <span style="color:#644a9b">brfalse</span>.s  IL_001b
0042               <span style="color:#644a9b">ldloc</span>.1
0043               <span style="color:#644a9b">ldc</span>.i4.1
0044               <span style="color:#644a9b">add</span>
0045               <span style="color:#644a9b">stloc</span>.1
0046     <span style="color:#006e28">IL_0011:</span>  <span style="color:#644a9b">ldloc</span>.1
0047               <span style="color:#644a9b">ldloc</span>.0
0048               <span style="color:#644a9b">blt</span>.s      IL_0008
0049               <span style="color:#644a9b">ldloc</span>.0
0050               <span style="color:#644a9b">call</span>       <span style="color:#0057ae">void</span> [mscorlib]System.Console::WriteLine(<span style="color:#0057ae">int32</span>)
0051     <span style="color:#006e28">IL_001b:</span>  <span style="color:#644a9b">ldloc</span>.0
0052               <span style="color:#644a9b">ldc</span>.i4.1
0053               <span style="color:#644a9b">add</span>
0054               <span style="color:#644a9b">stloc</span>.0
0055     <span style="color:#006e28">IL_001f:</span>  <span style="color:#644a9b">ldloc</span>.0
0056               <span style="color:#644a9b">ldc</span>.i4     0x3e8
0057               <span style="color:#644a9b">blt</span>.s      IL_0004
0058               <span style="color:#644a9b">ret</span>
0059 }
0060 
0061 .<span style="font-weight:bold">method</span> <span style="color:#0057ae">assembly</span> <span style="font-weight:bold">static</span> <span style="color:#0057ae">void</span> modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl)
0062         test_pointer_operations(<span style="color:#0057ae">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:#898887">// Code size       44 (0x2c)</span>
0066   .<span style="color:#0057ae">maxstack</span>  2
0067   .<span style="color:#0057ae">locals</span> ([0] <span style="color:#0057ae">int32</span>* ptr,
0068            [1] valuetype A* V_1,
0069            [2] valuetype A* a,
0070            [3] <span style="color:#0057ae">int32</span> k)
0071 <span style="color:#898887">// k = 0;</span>
0072   <span style="color:#006e28">IL_0000:</span>  <span style="color:#644a9b">ldc</span>.i4.0
0073   <span style="color:#006e28">IL_0001:</span>  <span style="color:#644a9b">stloc</span>.3
0074 <span style="color:#898887">// ptr = &amp;k;</span>
0075   <span style="color:#006e28">IL_0002:</span>  <span style="color:#644a9b">ldloca</span>.s   k <span style="color:#898887">// load local's address instruction</span>
0076   <span style="color:#006e28">IL_0004:</span>  <span style="color:#644a9b">stloc</span>.0
0077 <span style="color:#898887">// *ptr = 1;</span>
0078   <span style="color:#006e28">IL_0005:</span>  <span style="color:#644a9b">ldloc</span>.0
0079   <span style="color:#006e28">IL_0006:</span>  <span style="color:#644a9b">ldc</span>.i4.1
0080   <span style="color:#006e28">IL_0007:</span>  <span style="color:#644a9b">stind</span>.i4 <span style="color:#898887">// indirection instruction</span>
0081 <span style="color:#898887">// ptr = &amp;param</span>
0082   <span style="color:#006e28">IL_0008:</span>  <span style="color:#644a9b">ldarga</span>.s   param <span style="color:#898887">// load parameter's address instruction</span>
0083   <span style="color:#006e28">IL_000a:</span>  <span style="color:#644a9b">stloc</span>.0
0084 <span style="color:#898887">// *ptr = 2</span>
0085   <span style="color:#006e28">IL_000b:</span>  <span style="color:#644a9b">ldloc</span>.0
0086   <span style="color:#006e28">IL_000c:</span>  <span style="color:#644a9b">ldc</span>.i4.2
0087   <span style="color:#006e28">IL_000d:</span>  <span style="color:#644a9b">stind</span>.i4
0088 <span style="color:#898887">// a = new A;</span>
0089   <span style="color:#006e28">IL_000e:</span>  <span style="color:#644a9b">ldloca</span>.s   a
0090   <span style="color:#006e28">IL_0010:</span>  <span style="color:#644a9b">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:#006e28">IL_0015:</span>  <span style="color:#644a9b">pop</span>
0092 <span style="color:#898887">// ptra = &amp;a;</span>
0093   <span style="color:#006e28">IL_0016:</span>  <span style="color:#644a9b">ldloca</span>.s   a
0094   <span style="color:#006e28">IL_0018:</span>  <span style="color:#644a9b">stloc</span>.1
0095 <span style="color:#898887">// ptra->meth();</span>
0096   <span style="color:#006e28">IL_0019:</span>  <span style="color:#644a9b">ldloc</span>.1
0097   <span style="color:#006e28">IL_001a:</span>  <span style="color:#644a9b">dup</span>
0098   <span style="color:#006e28">IL_001b:</span>  <span style="color:#644a9b">ldind</span>.i4 <span style="color:#898887">// reading the VMT for virtual call</span>
0099   <span style="color:#006e28">IL_001c:</span>  <span style="color:#644a9b">ldind</span>.i4
0100   <span style="color:#006e28">IL_001d:</span>  <span style="color:#644a9b">calli</span>      unmanaged stdcall <span style="color:#0057ae">void</span> modopt([mscorlib]System.Runtime.CompilerServices.CallConvStdcall)(native int)
0101   <span style="color:#006e28">IL_0022:</span>  <span style="color:#644a9b">ret</span>
0102 } <span style="color:#898887">// end of method 'Global Functions'::test_pointer_operations</span>
0103 </pre></body></html>