【问题标题】:What is the "virtual execution stack"?什么是“虚拟执行堆栈”?
【发布时间】:2011-08-15 22:31:40
【问题描述】:

我正在阅读有关 CIL 的内容,并且不断看到对“虚拟执行堆栈”的引用(例如,在创建局部变量并为其赋值时)。

但我不明白虚拟执行堆栈到底是什么。是不是“调用栈”,就是我们说结构加载到栈上时总是指的那个栈?

【问题讨论】:

    标签: .net stack


    【解决方案1】:

    堆栈指令集直接在硬件中执行。另一方面,虚拟堆栈指令在软件中解释。虚拟化与使用 VM(虚拟机)处于同一条线上,您将在 VM 内部获得模拟的操作系统。在虚拟堆栈中,所有硬件堆栈都被抽象(隔离)远离您。

    例如机器语言(010001)由硬件(CPU)直接处理。另一方面,虚拟指令由软件处理,模拟和隔离底层硬件的复杂行为。见:http://en.wikipedia.org/wiki/Stack_machine#Virtual_stack_machines

    阅读一些有关“Java 虚拟机”的信息,这可能是虚拟堆栈机最流行的实现。

    【讨论】:

    • @Teoman:好的,谢谢。而在谈到 CIL 时,虚拟执行堆栈是否与 .NET 中一直在谈论的调用堆栈相同?只有这一堆?我只是想知道它们是否是同一事物的两个名称?
    • @Teoman:好的,谢谢。所以你说只有一个“堆栈”,“调用堆栈”,“虚拟执行堆栈”。然后还有一个堆,完全不同。对吗?
    • "stack", "heap" = 存储数据的内存区域。 “调用堆栈” = 内存映射,其中排列方法以修改堆栈或堆分配的内存。一开始我知道有点混乱:)en.wikipedia.org/wiki/Call_stacken.wikipedia.org/wiki/Stack-based_memory_allocationen.wikipedia.org/wiki/Stack_%28data_structure%29
    • 大声笑好的!我知道了。有一个调用堆栈,它是用于修改“内存区域”的方法的内存映射。然后有两个“内存区域”——“堆栈”(也称为“虚拟执行堆栈”)和堆。对吗?
    • @Teoman:LMAO 好的。 1 叠。它同时用于内存映射和局部变量。正确的??那些维基百科文章有所帮助。我看到堆栈存储了方法完成时返回到哪里的内存地址,并在此基础上推送本地值。然后当方法完成时,局部变量被弹出并且内存地址将执行返回给调用方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2012-04-21
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多