MSIL中的求值栈是什么

    求值栈是MSIL中非常重要的一种数据结构,它能将你的应用程序和内存联系起来。它看起来很像栈帧(传统函数调用),但是它和栈帧又有很大的差异。可以将求值栈理解为应用程序的视图,你可以通过它看到函数的参数、本地变量、临时变量等信息。在传统的程序中函数的参数是被分配到栈上的(栈空间是编译时分配好的),但是在.NET里面函数的参数是被分配到一个为函数的参数以及本地变量保留的独立存储区(函数的参数区域和局部变量区域)。程序将不能直接访问这个存储区域,如果要访问这些参数和本地变量则必须使用命令load将他们从内存中移动到求值栈的槽上面。同时,你可以通过store命令来更新这些参数或本地变量的内容,求值栈上每个槽的大小是4字节或者8字节。既然是栈那么必然有栈的特点,求值栈也是一个后继先出的存储结构,同时为了函数调用的后栈的平衡性,在函数开始调用前,求值栈是空的,函数调用结束返回结果后,求值栈还是空的。这一点和传统的栈帧是一样的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值