解读 alchemy 技术,加上个人理解

本文深入探讨了Adobe Flash在移动设备上的技术挑战,特别是Alchemy技术如何通过FreeBSD内核将C/C++代码转换为不同平台的本地代码。文章还解释了AS3解析器的工作原理及其在Flash中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

针对 adobe 公司停止开发移动版Flash Player以后,从我了解的内容上看,flash 端的构架是个问题,为了支撑 native code 引入了一个叫 Alchemy 技术,事实上是在为原来的 LLVM 虚拟机的基础上又托管了一个虚拟机,AVM2 将负责实时的把本地代码翻译成中间件,再由 LLVM 转译成机器码。

这种设计在嵌入式上有很大的瓶颈,什么瓶颈大家也看到了。adobe 想让大家使用 flash 做出够炫的 3D 游戏,但是 flash 无法做到像 C# 那样,直接中间语言到 native 的互动甚至是硬件层,也没有像 JAVA 的 JVM 技术去映射,而这个问题最大的可能出现,就是自己的虚拟机内核是一面墙。

解读 alchemy 技术:adobe 的 alchemy 技术事实上引用了 freebsd 的内核,然后把你写的代码,根本 freebsd api 抽象成中间件,再由 freebsd 内核接口实现到各个操作平台上。 说白了,就是你写的代码,要根本不同的平台去映射一下实现,前端是他们的代理层,也就是所谓的虚拟机。跨平台的原理就是在此。

前端是 as3 的解析器,as3 的解析器会转换成中间件,再由中间件映射到系统的二进制,c++ 的部分也会在此转换成中间件,只是走了一套不同的解析器工作。最终实现 flash 的整个动作。

当然理论是你只能使用 freebsd 提供的 api 来书写你所要完成的 c++ 代码,之后会有 flash 的虚拟机抽象成 win32 的接口来适应 windows 平台。举个例子,虽然你在 alchemy 中实现了 posix 的 pthread_create, 但是在解析器中依然会把你变成 __beginthreadex。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值