Managed Heap: GC auto manage. One process, One heap.

Call Stack: Runtime auto manage, every time when you call a method, the Record frame+1.

Record Frame save the Method Parameter and Return Address and Local Variable

Evaluation Stack: Every Thread.

ldc.i4.1: Put a 4 byte with value 1 to Evaluation Stack.

stloc.0 : Retrieve a value from Evaluation Stack then put it to Call Stack Record Frame V0 and set V0 = 1

stloc
Retval is an instruction that takes the result of the call to sscanf from the stack and stores it in the local
variable Retval. We need to save this value in
a local variable because we will need it later.

ldloc.0: Put V0 to Evaluation Stack

ldloc Retval copies
the value of back onto the stack. We
need to check this value, which was taken off the stack by the instruction.Retvalstloc

box [mscorlib]System.Int32: Retrieve a value from Evaluation Stack, then box this value type to reference type and put it to Managed Heap.

ldstr "i+j+k": Put the "i+j+k" reference to Evaluation Stack from Managed Heap.

ldstr “Enter a number”
is an instruction that loads the specified string constant onto the
stack. The string constant in this case is stored in the metadata. We can refer
to such strings as common language runtime string
constants or metadata string constants. You can
store and handle the string constants in another way, as explained in a few
moments, but ldstr deals exclusively with
common language runtime string constants, which are always stored in Unicode
format

call string [mscorlib] System.String::Concat(object, object): 從 Evaluation Stack 中取出兩個值,此二值皆為 Reference Type,下面的值當作第一個參數,上面的值當作第二個參數,呼叫 mscorlib.dll 所提供的 System.String.Concat() method 來將此二參數進行字串接合(String Concatenation),將接合出來的新字串放在 Managed Heap,將其 Reference 放進 Evaluation Stack。值得注意的是:由於 System.String.Concat() 是 static method,所以此處使用的指令是 call,而非 callvirt(呼叫虛擬)

ret: End this call.

最新文章

  1. gerrit集成gitweb:Error injecting constructor, java.io.IOException: Permission denied
  2. C#的三大特性
  3. 委托的lambda表达式
  4. root用户安装的软件在普通用户不生效
  5. hdu1035
  6. [Unity AssetBundle]Asset资源处理
  7. openSUSE 13.1 搭建 DNS服务器
  8. jquery.lazyload.js实现图片懒加载
  9. 超简单的jQuery前台分页,不需导包
  10. oracle的for和i++
  11. pwnable.kr-random-witeup
  12. 网络协议抓包分析——IP互联网协议
  13. json:java中前台向后台传对象数据
  14. Cannot find a valid baseurl for repo: base/7/x86_64
  15. Activity四大启动模式
  16. 如何修改eclipse中maven默认仓库路径
  17. django源码解析之 BooleanField (二)
  18. Android getprop setprop watchprops用法
  19. JVM-垃圾收集算法、垃圾收集器、内存分配和收集策略
  20. uml各类图

热门文章

  1. Redis系列---redis简介01
  2. .net core 后台如何生成html字符串到前台_后台html字符串在前台显示编码状态
  3. python3 对list对象的增删改查
  4. Java生鲜电商平台-促销系统的架构设计与源码解析
  5. 浅谈Java中switch分支语句
  6. JS的with关键字到底是什么?
  7. SRDC - ORA-30013: Checklist of Evidence to Supply (Doc ID 1682701.1)
  8. [Go] gocron源码阅读-通过第三方cli包实现命令行参数获取和管理
  9. 4.Python网络编程_一般多线程创建步骤
  10. 1.Java基础_Java核心机制简介