问题标签 [avm2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
actionscript-3 - AS3:类加载顺序
我有一个关于 AS3 中的静态块的快速问题。
我有一个库,在执行任何应用程序逻辑之前需要静态初始化。如果我像下面这样插入一个静态代码块,这真的会在其他所有事情之前执行吗?(即:假设一切都将在应用程序启动之前进行设置是否安全?)
我假设上面的代码将以下列方式执行:
- 加载
Application
类,因为它是“主要可执行文件”。 - 加载
MyStaticLibrary
并MyWorker
执行其中的任何静态块。 - 执行内部的静态块
Application
。 - 调用构造函数并让事情顺利进行。
有谁知道这是真的还是假的?我想我会同时构建一个应用程序来测试它:)
actionscript-3 - 在 ActionScript 字节码中,NewActivation 是什么意思?
有些方法使用它有些不使用,显然这是由 needsActivation 标志指定的,坚果它做什么以及何时使用它以及何时不使用它?
AVM 文档上的信息有些粗鲁:
创建一个新的激活对象 newactivation,并将其推入堆栈。只能用于在 MethodInfo 条目中设置了 NEED_ACTIVATION 标志的方法。
actionscript-3 - Any tool to debug ActionScript ByteCode? Would like to observe registers, stacks
So when running a SWF, is there a way to step through line by line of ABC code and observe registers, stacks? Could I at least print it to screen or log it?
actionscript-3 - 堆栈,ActionScript ByteCode AVM2 中的寄存器,都有哪些?
在 AVM2 概述 PDF 中,我遇到了对两种类型堆栈的引用 - 范围堆栈和操作数堆栈。
1)我假设这是两个不同的内存堆栈,每个处理不同的事情。还有更多的堆栈吗?
2) pushstring "hello" - 这会将 "hello" 字符串所在的内存地址的起始地址推送到操作数堆栈上。正确的?
3) setlocal 0 - 这会将堆栈(上图)中的值通过弹出来存储到 register0 中。正确的?
4)PushScope() - 嗯,文档说堆栈的弹出值,将值推送到范围堆栈上。为什么?
我知道一点 NASM,但 ABC 似乎比这更复杂。特别是我对范围堆栈和多个堆栈的整个概念感到困惑。
flash - AVM Verifier to Flash Log,有些东西怎么解释?
AVM 验证程序在遇到错误时写入闪存日志。在文档中,它说验证者将访问可能会发生跳转的“所有可能的分支”。但是,在尝试跟踪输出时仍然很混乱。有什么想法可以正确解释它吗?整个流程看起来很混乱。
例如以下标记的含义是什么。
先合并
合并当前
合并目标
合并后
此外,还有机器指令和机器状态以及寄存器、范围堆栈和操作数堆栈。我明白当我看到指令和后来修改的状态时,例如 PushFalse 会使布尔值出现在操作数堆栈上 - (Boolean[B])。但是有时状态即使没有前面的指令也会写入,结合 MERGE FIRST、MERGE CURRENT 等。这是什么意思?
disassembly - 在哪里可以找到 AVM2 反汇编程序(或转储工具)?
问候我找到了这个很好的答案: How are methods found in AVM2 bytecode? 见第 3 条。有人可以帮帮我吗?用于生成 abcFile 转储的工具是什么?
谢谢!
actionscript-3 - AVM2 支持哪些优化?
我想知道,AVM2(ActionScript 3 VM)支持什么样的优化?我知道它使用 JIT,但它支持死代码消除、常量折叠、内联等吗?
另外,ActionScript 编译器也做了一些优化,这对我来说也很有趣。AFAIK C# 编译器只进行少量优化(仅语言支持需要),JIT 完成所有工作。它的工作速度非常快。
谢谢。
感谢 MPD。AVM2 支持:
- 恒定折叠
- 复制和不断传播
- 公共子表达式消除 (CSE)
- 死码消除 (DCE)
flash - ActionScript - trace().顶级函数行为
当我在 Flash Player Debug 中跟踪变量时,我遇到了一个奇怪的行为。假设我们有一个像“x:y”这样的模式。“x”和“y”是整数变量。如果我们用
行为是
1) 如果 x < 10
“x”变量和“:”将被省略,只打印“y”
2) 如果 x >= 10
一切都按预期工作。“x:y”打印出来。
问题:
- 为什么会发生?
- 冒号是动作脚本中的特殊字符吗?
- 是否可以避免这种行为并打印出例如“1:1”?
重现:
提前致谢。
flash - 在 Flash/AS3 中使用 Loader.load() 函数时是否存在挂起或延迟?
我创建了一个简单的图像列表,每 60 秒重新加载一次。但是,我注意到当重新加载过程开始时,Flash 似乎挂起或至少不接受/记住任何鼠标输入。
具体来说,虽然它应该被冻结,但我尝试单击一个按钮来执行它的通常功能,目前它只是显示鼠标按下状态,但它不会注册点击,直到假定的冻结结束之后。这导致我不得不再次点击。
我真的需要知道,如果我正在加载 5 个小 png 图像(循环调用load()
5 次),这是否会导致 Flash 挂起并忽略任何鼠标输入,或者我是在说疯话,应该在其他地方寻找问题。
我知道 Flash 不是多线程的,但调用肯定load()
不会导致整个应用程序自行关闭 100-200 毫秒?
非常感谢任何输入,谢谢。
performance - 为什么在 AS3 中链表比 Vector 快?
我在这个网站上尝试了基准测试:Array vs. Vector vs. Linked list。它测试迭代所述序列的性能。
值得注意的是,遍历链表的速度大约是2.5倍Vector.<int>
。这种反直觉结果的原因是什么?