如何从 AS3 代码调用 Tamarin ESC 编译器?

2024-03-31

我正在尝试从 AS3 代码调用 Tamarin 的 ESC 编译器。我已经在 Flash Player 中加载了 ESC 编译器字节代码,但是当我调用它时,ESC 编译器总是返回相同的不执行任何操作的字节代码,无论我提供什么源代码。人类可读的 ESC 代码如下所示:

function compileStringToBytes(input, context="(string)", start_line=1) {
    let [_,_,res] = compile( (function () input),
                             (function (abc) abc.getBytes()),
                             context,
                             start_line );
    return res;
}

我使用以下 AS3 代码调用它:

var compile:Function = getDefinitionByName("ESC::compileStringToBytes") as Function;
var array:ByteArray = compile( function():String { return "trace(\"hi\");" },
                "test" );

但无论我输入什么源代码,它总是返回两个函数的字节代码,一个函数调用另一个函数,两个函数都不执行任何操作。

这是它返回的字节码(元数据被删除,转换为人类可读的):

script0
const <#internal test>::internal:Namespace = <#internal test>   /* slot_id 0 */
const <#internal test>::public:Namespace =  /* slot_id 0 */
var Function:*  /* slot_id 0 */

function script0$init():*   /* disp_id 0*/
{
  // local_count=2 max_scope=1 max_stack=2 code_len=11
  0         getlocal0       
  1         pushscope       
  2         findpropstrict  Function
  4         newfunction     function ():*   /* disp_id 0*/
  6         setproperty     Function
  8         getlocal1       
  9         returnvalue     
  10        returnvoid      
}


function ():*   /* disp_id 0*/
{
  // local_count=1 max_scope=0 max_stack=0 code_len=1
  0         returnvoid      
}

提前致谢!我知道这是一个核心问题,但我希望一些核心编码器可以阐明它!


找到了我自己的问题的答案。

以下站点使用最新的 Tamarin ESC 编译器 ABC 位通过 Flash 动态运行代码(左侧面板显示运行编译器的源代码):

http://wonderfl.net/c/2pBs/read http://wonderfl.net/c/2pBs/read

它实际上使用 Mercurial http 接口下载器获取 Tamarin Redux 位:http://hg.mozilla.org/tamarin-redux/raw-file/db3ebe261f68/esc/bin/ http://hg.mozilla.org/tamarin-redux/raw-file/db3ebe261f68/esc/bin/

Wonderfl 代码依次使用 Claus Wahlers 的 codeazur as3swf 来包装 ABC 位以加载到 Flash 中(编译器本身和编译后的位):

https://github.com/claus/as3swf https://github.com/claus/as3swf

谢谢克劳斯,太棒了!开源代码很震撼。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 AS3 代码调用 Tamarin ESC 编译器? 的相关文章

  • 适用于 Windows 的 C++11 编译器

    我刚刚在 Channel9 上看了一些视频 我发现 lambda 之类的东西真的很酷 当我尝试复制该示例时 它失败了 auto也没用 我正在使用诺基亚的 qtcreator 它随 gcc 4 4 0 一起提供 我想知道哪个编译器实现了有趣的
  • ActionScript 3.0 中缺少运算符重载

    我在 ActionScript 中最怀念的事情之一是缺少运算符重载 特别是 我通过在我的类中添加 Compare 方法来解决这个问题 但这在很多情况下没有帮助 比如当你想使用内置字典之类的东西时 有没有好的方法来解决这个问题 Nope 但添
  • JavaScript“可写”属性描述符如何工作?

    为什么 JavaScript 可写 属性描述符不禁止任何属性更改 例如 var TheDarkKnight Object create Superhero name value Batman writable false TheDarkKn
  • eval 列表理解失败[重复]

    这个问题在这里已经有答案了 考虑以下假设代码 class B object def init self self b 2 def foo self out1 eval self b ok print out1 prints 2 out2 e
  • 用于编译/反编译二进制数据文件的通用实用程序或库?

    我有各种二进制文件格式 我需要将其转储为某种文本格式 编辑然后重新编译 可能是二进制格式的稍微不同的版本 当然 我可以用 C C 编写一堆实用程序代码来完成这种事情 并且可能利用一个库来处理文本方面的事情 XML 或 JSON 或其他 但这
  • 将应用程序状态保存在磁盘或其他位置,以便用户稍后访问它

    In 弹性构建器 4 5我正在做一个像这样的项目cacoo http www cacoo com 我想保存diagrams display object ui components text 在将应用程序关闭到应用程序之后我无法访问的某个地
  • Actionscript 对象的属性数量

    如何获取通用 Actionscript 对象中的属性数量 如数组长度 您必须循环所有元素才能对它们进行计数 function objectLength myObject Object int var cnt int 0 for var s
  • 当我使用 yymore() 时,在 EOF 处出现 Flex 错误“缓冲区末尾丢失”

    我正在编写一个 Flex 程序来处理字符串常量 当输入文件在字符串中遇到 EOF 时 我想返回一个 ERROR 标记 文件遇到 EOF 并打印 ERROR 后出现以下错误 致命的 Flex 扫描仪内部错误 缓冲区末尾丢失 这是我的代码 可以
  • 向 Java 类添加编程注释

    使用示例 我想在类字段上添加一个自定义注释 MyContainer 然后在所有此类字段上自动添加相关的 Hibernate 注释 取决于字段类型和属性 另外 我需要向类添加 JAXB XmlType 注释 并使类型名称基于类名称 我还想根据
  • Flex 与 ActionScript

    我正在尝试构建 实现一个 Flash 视频播放器来播放视频 我研究了 Flex 并仅使用 VideoElement 构建了一个基本应用程序 它在没有静态链接库的情况下编译为 41k 在链接库时编译为 300k 我生成了报告 但仍然不确定为什
  • 是否有像 gccxml 这样的用于生成包装器的 C 标头解析器工具?

    我需要为一种新的编程语言编写一些 C 标头包装器 并且想要类似 gccxml 的东西 但不完全依赖 gcc 以及它在 Windows 系统上带来的问题 只需要读C而不是C 只要有完整的文档记录 任何格式的输出都可以 Linux Solari
  • Flash 未在调试播放器中显示错误/堆栈跟踪(firefox/chrome/whatnot)

    我正在尝试调试在线默默地失败的应用程序 我 100 确定我正在运行 Flash 调试播放器 为了确保我不会丢失它 我故意抛出一个错误 但 Flash 在浏览器中没有显示任何 stracktrace 我快要失去它了 有什么线索吗 我正在 ch
  • <%# Eval("State") %> 或 <%# DataBinder.Eval(Container.DataItem, "state")%>

    拥有和拥有有什么区别 in your aspx页面 与具有 in your aspx page Eval State 是一个简化形式DataBinder Eval Container DataItem State 句法 它仅适用于数据绑定模
  • 如何在as3中不询问的情况下写入外部文件

    我有这个代码 var fileRef FileReference new FileReference fileRef save ciao coso lingua txt 在现有的 lingua txt 文件上写入 该脚本有效 但每次他保存时
  • 非虚实例方法继承是如何解决的?

    通过 C 从 CLR 引用 它读起来就像call将在运行时通过 CLR 搜索由基类型定义的方法 Then callIL指令用于调用实例或虚拟 方法中 您必须指定一个引用对象的变量 方式 变量本身的类型指示定义该方法的类型 CLR 应该调用
  • 是否可以用 C# 为 Android 编写应用程序?

    我们都知道Android运行Dalvik VM程序 通常开发人员用 Java 编写程序并将其编译为 Dalvik 字节码 我想知道是否有可能创建一个可以接受 C 代码并将其编译为 Dalvik 字节码的编译器 嗯 这是一种选择 或者您可以在
  • 在 C# 中加密并在 Flex 中解密

    我需要解密 Flex 中的一些数据 这些数据是用 C 加密并写入文件的 为了简单起见 我选择使用 as3crypto As3 库和 Bruce Schneier C 库 AS3 as3加密链接 http code google com p
  • 使用“评估”功能。为什么它不起作用?

    这段代码 evaluate def test println Test is successful test 结果异常 致命 没有方法签名 script1409644336796288198097 test 适用于参数类型 值 可能的解决方
  • 将数组从 Flash (AS3) 发送到 JavaScript

    是否可以使用ExternalInterface 调用将数组从Flash AS3 发送到JavaScript 我目前正在 Flash 内的 foreach 循环中多次调用一个函数 但速度太快 JavaScript 无法跟上 我的想法是创建一个
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e

随机推荐

  • 未安装模拟器 - Android Studio

    我的 android studio 工作正常 有点慢 但工作正常 但是当我几天前启动它并尝试运行时 它开始向我显示错误 未安装模拟器 请帮我 找不到任何合适的解决方案 不用担心 只需打开 SDK Manager 在 Android Stud
  • Runtime.getRuntime().availableProcessors() 在容器优化操作系统上始终返回 1

    我正在 GCP 上的 kubernetes 引擎上部署 Elasticsearch 但遇到了性能问题 Elasticsearch根据核心数量确定各种线程池的大小 尽管我创建了一个 32 核 VM 但线程池大小仅为 1 我确实编写了一个测试程
  • 如何对 IP 地址列表进行排序并计算每个地址的类别和网络掩码? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有两个选择 一是我有一个包含 IP 列表的数组 例如 my Ip array that has the IPs below in it
  • AWS Glue 中 s3fs 库导入失败

    AWSglue不导入s3fs模块 import s3fs 我希望导入该库 但 AWSglue 说 导入错误 没有名为 s3fs 的模块 AWS Glue 作业预装了一些常用库 但除此之外 您还需要下载 whl对于 pypi 的库 在这种情况
  • Woocommerce 更改购买时的用户角色

    我正在尝试使用这段代码将我的用户从默认角色 订阅者 更新为从我的商店购买产品时的 高级 角色 add action woocommerce order status completed change role on purchase fun
  • 如何使用 GPU 使用 tf.lite.Interpreter(在 python 中)运行 tflite 模型 (*.tflite)?

    我已根据以下说明将张量流推理图转换为 tflite 模型文件 tflite https www tensorflow org lite convert https www tensorflow org lite convert 我在我的 G
  • Javascript - 字符串连接[重复]

    这个问题在这里已经有答案了 我有这个功能 javascript function popup mylink windowname w h if window focus return true var href if typeof myli
  • 如何记住终端中多个选项卡的会话? (类似于 FF 会话管理器)

    一个人如何 撤消关闭选项卡 在终端中 与它非常相关的是 是否有可能记住终端中的选项卡会话 我的意思是 与 Firefox 类似 如果我关闭特定终端窗口中的所有选项卡 第二天如何打开相同的选项卡 对于像我这样经常使用多个选项卡的人来说 记住终
  • 致命异常主要 Android 应用程序

    我目前正在开发 Android 应用程序 当我单击菜单时 菜单会显示 但如果您选择 首选项 它就会崩溃 如果您单击 新建 则效果很好 我不知道发生了什么事 我是 Android 应用程序开发和 eclipse IDE 的新手 所以任何东西都
  • 如何编写 Linux .dts 设备树文件?

    我要在我的开发板上启动Linux 我需要一个dts文件 设备树文件 来描述整个硬件 但我对这个文件的语法知之甚少 不足以在板上正确运行Linux 我现在所知道的只是如何描述一个单元的中断号 频率 地址 父单元及其兼容的驱动程序类型 如下所述
  • 如何在rails 2.3.3中有条件地分配ActionController::Base.session

    我有一个 Rails 应用程序 在 config initializers session store rb 文件中包含以下内容 ActionController Base session key gt app session secret
  • WPF:将标签绑定到类属性

    我试图将标签的内容绑定到类实例的字符串属性 但没有取得太大成功 XAML
  • AVFrame 到 QImage 的高效转换

    我需要在基于 Qt 的应用程序中从视频中提取帧 使用 ffmpeg 库 我可以将帧作为 AVFrame 获取 我需要将其转换为 QImage 以在应用程序的其他部分中使用 这种转换必须是高效的 到目前为止看来sws scale 是正确使用的
  • 如何通过HTTPPost发送图片?

    我正在创建一个活动 需要使用他们的 API 将图像上传到网络服务 我发现如果我使用 UrlEncodedFormEntity 并通过它发送图像数据 网络服务没有收到该信息 至少它无法读取该内容 事实上 如果我添加一些变量与图像数据一起发送
  • 无法使用重复的“graphql”模块

    我发现graphql js https github com graphql graphql js库不允许依赖项也使用 graphql 你会得到以下错误 Duplicate graphql modules cannot be used at
  • 多行点线或虚线文本下划线

    因为 CSS 文本下划线只允许使用实线 并且它的位置位于字符串的底部 所以我使用 border bottom 加上一点填充来实现点或虚线文本下划线 h2 border bottom 1px dotted 999 padding bottom
  • 在 Ada 中立即开始循环的下一次迭代

    我想要一个无限循环 其中循环几乎贯穿整个程序 并且在任何时候 基于条件语句 我希望它退出循环的特定迭代并返回到顶部并执行 有办法做到这一点吗 它不必是无限循环 它可以是一个for循环 我只想让它进入该循环的下一次迭代 您可以使用 goto
  • 如何简单地验证 Rails 中的复选框

    如何简单地验证 Rails 中的复选框是否已选中 该复选框用于最终用户协议 它位于模式窗口中 可以说我有复选框 我应该在哪里以及如何验证这一点 我在这里看到了大多数关于 Rails 中复选框验证的帖子 但没有一个适合我的需要 Adding
  • 使用 ADO.Net 将 utf-8 写入 SQL Server 文本字段并维护 UTF-8 字节

    我有一些编码为 UTF 8 的 xml 我想将其写入 SQL Server 中的文本字段 UTF 8 与 Text 字节兼容 因此它应该能够执行此操作 然后读出仍编码为 utf 8 的 xml 然而 UTF 8 中的多字节特殊字符 例如 会
  • 如何从 AS3 代码调用 Tamarin ESC 编译器?

    我正在尝试从 AS3 代码调用 Tamarin 的 ESC 编译器 我已经在 Flash Player 中加载了 ESC 编译器字节代码 但是当我调用它时 ESC 编译器总是返回相同的不执行任何操作的字节代码 无论我提供什么源代码 人类可读