博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Evaluation Stack
阅读量:5102 次
发布时间:2019-06-13

本文共 2286 字,大约阅读时间需要 7 分钟。

Evaluation Stack

The evaluation stack, which is mentioned often in the description of the Hello World application, is the pivotal structure of MSIL applications. It is the bridge between your application and memory locations. It is similar to the conventional stack frame, but there are salient differences. The evaluation stack is the viewer of the application, and you can use it to view function parameters, local variables, temporary objects, and much more. Traditionally, function parameters and local variables are placed on the stack. In .NET, this information is stored in separate repositories, in which memory is reserved for function parameters and local variables. You cannot access these repositories directly. Accessing parameters or local variables requires moving the data from memory to slots on the evaluation stack using a load command. Conversely, you update a local variable or parameter with content on the evaluation stack using a store command. Slots on the evaluation stack are either 4 or 8 bytes.

Figure 11-1 shows the relationship between the evaluation stack and the repositories for function parameters and local variables.

 

Figure 11-1: A depiction of the evaluation stack, function parameters, and local variables

The evaluation stack is a stack and thereby a last in/first out (LIFO) instrument. When a function starts, the evaluation stack is empty. As the function runs, items are pushed and popped from the evaluation stack. Before the function exits, except for a return value, the evaluation stack must once again be empty. The jmp and tail instructions are exceptions to this rule. If the evaluation stack is not empty at exit, the run time raises an InvalidProgramException exception.

The .maxstack directive limits the number of items permitted simultaneously on the stack. The directive is optional. If the directive is not present, eight slots are reserved on the evaluation stack. The .maxstack directive is a confirmation that an application is performing as expected. Extra items on the evaluation stack are an indication of potential logic problems in an application or a security violation. In either circumstance, this is a violation worthy of a notification.

 我的总结:

 evaluation stack 是 程序访问 

转载于:https://www.cnblogs.com/fmys/p/10235893.html

你可能感兴趣的文章
python 面向对象
查看>>
分享网页加载速度优化的一些技巧?
查看>>
小特效【较完善的滑动下拉菜单】【购物车加减器】
查看>>
【读书笔记】【独立思考】2018-04-03(2)
查看>>
java 实现好看的图形验证码
查看>>
字符串_KMP算法(求next[]模板 hdu 1711)
查看>>
第八章 程序的分支结构
查看>>
随笔37 JVM内存
查看>>
HW2.9
查看>>
对象内存布局 (9)
查看>>
IOS第11天(4:UIDatePicker时间选择,和键盘处理,加载xib文件,代理模式)
查看>>
Delphi XE开发 Android 开机自动启动
查看>>
Delphi中Format与FormatDateTime函数详解
查看>>
c#数据库连接池
查看>>
hdu-5992 Finding Hotels(kd-tree)
查看>>
Alfresco 4 项目介绍
查看>>
[Database] 不知道表名和字段查找值=1234的数据.
查看>>
MySQL的高可用实现:MySQL系列之十四
查看>>
python之os模块
查看>>
重写FileUpload控件让它可以显示上传后的文件名
查看>>