/ICSharpCode.Decompiler/Tests/StackTests/StackTests.il

http://github.com/icsharpcode/ILSpy · SKILL · 132 lines · 107 code · 25 blank · 0 comment · 1 complexity · e7531343f6fd328078dd663d5d067f9a MD5 · raw file

  1. .assembly extern mscorlib
  2. {
  3. .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
  4. .ver 4:0:0:0
  5. }
  6. .assembly StackTests
  7. {
  8. .hash algorithm 0x00008004
  9. .ver 1:0:4059:39717
  10. }
  11. .module StackTests.exe
  12. .imagebase 0x00400000
  13. .file alignment 0x00000200
  14. .stackreserve 0x00100000
  15. .subsystem 0x0003 // WINDOWS_CUI
  16. .corflags 0x00000003 // ILONLY 32BITREQUIRED
  17. .class private auto ansi beforefieldinit StackTests.Program extends [mscorlib]System.Object
  18. {
  19. .method public hidebysig static void Main(string[] args) cil managed
  20. {
  21. .entrypoint
  22. .maxstack 8
  23. ldc.i4.0
  24. call string StackTests.Program::Test1(bool cond)
  25. call void [mscorlib]System.Console::WriteLine(string) // false
  26. ldc.i4.1
  27. call string StackTests.Program::Test1(bool cond)
  28. call void [mscorlib]System.Console::WriteLine(string) // true
  29. ldc.i4.0
  30. ldc.i4.0
  31. ldc.i4.0
  32. call int32 StackTests.Program::Test2(int32 switch1, int32 br1, int32 br2)
  33. call void [mscorlib]System.Console::WriteLine(int32) // 11
  34. ldc.i4.0
  35. ldc.i4.1
  36. ldc.i4.0
  37. call int32 StackTests.Program::Test2(int32 switch1, int32 br1, int32 br2)
  38. call void [mscorlib]System.Console::WriteLine(int32) // 21
  39. ldc.i4.1
  40. ldc.i4.1
  41. ldc.i4.1
  42. call int32 StackTests.Program::Test2(int32 switch1, int32 br1, int32 br2)
  43. call void [mscorlib]System.Console::WriteLine(int32) // 32
  44. ldc.i4.2
  45. ldc.i4.1
  46. ldc.i4.0
  47. call int32 StackTests.Program::Test2(int32 switch1, int32 br1, int32 br2)
  48. call void [mscorlib]System.Console::WriteLine(int32) // 23
  49. ret
  50. }
  51. .method public hidebysig static string Test1(bool cond) cil managed
  52. {
  53. ldarg.0
  54. brtrue TRUE
  55. FALSE:
  56. ldstr "false"
  57. br EXIT
  58. TRUE:
  59. ldstr "true"
  60. EXIT:
  61. ret
  62. }
  63. .method public hidebysig static int32 Test2(int32 switch1, int32 br1, int32 br2) cil managed
  64. {
  65. ldarg.0
  66. switch (ENTRY1, ENTRY2, ENTRY3)
  67. ldc.i4.0
  68. ret
  69. ENTRY1:
  70. ldc.i4.1
  71. br BRANCH1
  72. ENTRY2:
  73. ldc.i4.2
  74. br BRANCH1
  75. ENTRY3:
  76. ldc.i4.3
  77. br BRANCH2
  78. BRANCH1:
  79. ldarg.1
  80. brtrue BRANCH2
  81. EXIT1:
  82. ldc.i4 10
  83. add
  84. ret
  85. BRANCH2:
  86. ldarg.2
  87. brtrue.s EXIT3
  88. EXIT2:
  89. ldc.i4 20
  90. add
  91. ret
  92. EXIT3:
  93. ldc.i4 30
  94. add
  95. ret
  96. }
  97. .method public hidebysig specialname rtspecialname
  98. instance void .ctor() cil managed
  99. {
  100. // Code size 7 (0x7)
  101. .maxstack 8
  102. IL_0000: ldarg.0
  103. IL_0001: call instance void [mscorlib]System.Object::.ctor()
  104. IL_0006: ret
  105. } // end of method Program::.ctor
  106. } // end of class StackTests.Program
  107. // =============================================================