首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionScript ByteCode AVM2中的堆栈、寄存器都有哪些?

ActionScript ByteCode AVM2中的堆栈、寄存器都有哪些?
EN

Stack Overflow用户
提问于 2011-03-25 00:03:14
回答 1查看 767关注 0票数 5

在AVM2概述PDF中,我遇到了对两种类型堆栈的引用-范围堆栈和操作数堆栈。

1)我假设这是两个不同的内存栈,各自处理不同的事情。还有更多的堆栈吗?

2)推字符串"hello“-这将把"hello”字符串所在的内存地址的起始推送到操作数堆栈上。对吗?

3) setlocal0-这将通过将堆栈(上面)中的值弹出到register0中。对吗?

4) PushScope() -嗯,文档说堆栈的pop值,将值推入作用域堆栈。为什么?

我对NASM略知一二,但ABC似乎比这更复杂。尤其是我对作用域堆栈和多个堆栈的整个概念感到困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-25 08:11:45

我不是AVM2专家,但我知道的是:

  1. 只有两个堆栈,你提到的两个堆栈:作用域和操作数。
  2. 是的,推字符串“
  3. ”会将字符串推送到操作数堆栈上。
  4. 也是正确的。setlocal0将从堆栈中弹出"hello“并将其存储在reg 0中。
  5. 范围堆栈被所有需要在范围内查找名称的操作使用,例如闭包和异常。通常,在ASM代码中,您会看到紧跟在getlocal_0后面的是一个推镜。这是很常见的。您可以将其视为将"this“对象添加到作用域堆栈,以便将来在方法调用、闭包作用域等中引用。

我强烈建议下载Tamarin源代码,并尝试使用那里的反编译器。此外,Yogda看起来非常便于学习:http://www.yogda.com/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5422033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档