5
从AVM2概述PDF中,我遇到了对两种类型堆栈的引用 - 范围堆栈和操作数堆栈。堆栈(s),ActionScript中的寄存器ByteCode AVM2,哪里都有?
1)我认为这是两个不同的内存栈,每个处理不同的事情。还有更多的堆栈吗?
2)pushstring“hello” - 这会将“hello”字符串所在的内存地址的开始推到操作数堆栈上。对?
3)setlocal 0 - 这将通过弹出它将堆栈(上面)中的值存储到register0中。对? 4)PushScope() - hmm,docs说栈的弹出值,将值推送到范围堆栈。为什么?
我知道一点NASM,但ABC似乎比这更复杂。特别是我对Scope Stack和多个堆栈的整个概念感到困惑。
Wohooo,Yogda看起来史诗。也感谢其他答案,我看到使用PushScope和NewActivation--稍后由Adobe编译器完成,因此我非常困惑。我想这些情况只是从他们身边而来的。 – Ska 2011-03-29 02:38:25
是的,我注意到编译器经常这样做并不总是必要的。许多人抱怨mxmlc,例如Joa Ebert。他更像是AVM2的专家。绝对看看他一直在努力的设备框架:http://code.google.com/p/apparat/ – svoisen 2011-03-29 20:22:44
我看到的ABC越多,我就会注意到更多未使用的操作。 例如(这太搞笑了): Dup的, SETLOCAL 2, PushScope, PopScope, 杀2,\t 我看着阿帕拉特也,谢谢。至于Yogda,它似乎完全是我需要的工具,但是......它只是Windows :( – Ska 2011-04-01 13:46:10