Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
闲聊
神奇的Adobe
发布于 2008-07-08 21:38:14 浏览:3499
订阅该版
Adobe的Scott Petersen上周在Mozilla谈论了他创造的工具链(Toolchain)——不久后将开源——可以让C代码跑在Tamarin虚拟机上。工具链包含了许多其它方面的细节,如一个定制的POSIX系统调用API和C多媒体库,让程序运行在flash上。Petersen设计一个特别的 byte array去直接贴图到RAM,因此降低模拟时的耗损并提升效率,可以让游戏之类的应用跑起来飞快。这样做的好处能在flash中以可接受的速度执行任何基于C的代码,如php、ruby、perl、python甚至java与objective-c。Petersen演示了一个flash版的Quake 游戏,以及在一个基于C的任天堂模拟器上跑Zelda,两者都完全可以玩,包括了音效和音乐。
查看更多
2
个回答
默认排序
按发布时间排序
bernard
2008-07-08
这家伙很懒,什么也没写!
ZT [http://ria.richtechmedia.com/2008/07/08/run-cc-in-flash-again/](http://ria.richtechmedia.com/2008/07/08 ... ash-again/) 最近仍然持續極度忙錄中,但有趣的新消息卻仍然不斷冒出,抽空趕緊寫一下。 還記得去年 Max 2007 時 Adobe 的神人 Scott Petersen 展示了一個 flash 版的 Quake 遊戲嗎?那時他使用的技術,例如 LLVM 等,現在已經變的更成熟,而且離正式推出更近一步了。 根據 toolness.com 的報導,Scott Petersen 最近在 Mozilla 給了場演講,說明了 LLVM 與 Tamarin 的運作關係,以及如何讓 c/c++ 程式可以跑在 Tamarin 上,下面是基本的 steps 1. c -> LLVM instructions (using slightly modified version of llvm-gcc) c/c++ code 透過 llvm-gcc (可能有動手腳稍微改過以符合 Tamarin 的需要) 編譯成標準的 LLVM instructions (IR) 2. LLVM instructions -> opcode (run by LLVM virtual machine in as3) 這些 llvm instructions 再經由一個用 actionscript 3 implement 的 virutal machine 處理成底層的 opcode 3. as3 -> bytecode -> machine code 而東西一旦變成 as3 剩下的就好處理了,它會利用 flash player 既有的功能去處理 bytecode 與 JIT machine code 轉換,然後就可以在每個人的 browser, desktop 與 mobile devices 上跑了。 由上面三個過程可知,真正的關鍵在於 #2 的 llvm virtual machine,它能將 llvm 轉換成 flash player 可吃的 opcode 進而達成『介接』的目地。 並且,據 Scott 指出,他同時也設計了一個特別的 byte array 來 directly mapping the system ram, 籍此降低模擬時的耗損並提升效率,這也是為何 Max 2007 上那個 Quake game 會嚇死人的快。 *這樣做的好處是? 當然任何理性的人都會接著問,這樣做有什麼好處呢?答案是好處多的很吶~ 1、由於他的 toolchain 支援 llvm-gcc,因此理論上,任何 c-based 的語言都可以吃進去,這包含了php, ruby, perl, python 甚至 java 與 objective-c ,只要這個語言能用 c compiler 編譯,就可以編譯成 llvm-instruction 然後在 flash player 裏執行。 因此,過去一狗票現成的 library 都可以拿來重覆使用,不需使用 actionscript 重寫,也不需為此特別把某些工作丟回 server 上去跑。 也因此,才會出現有人想惡搞,把 WINE port 上 flash 然後讓它跑 windows 程式 (flash player running on windows with windows application inside ?) XD 2、另一個更隱誨的好處則是 這可能徹底的改變人們編寫 web application 的方式。 基本上大部份人都會承認,現行用 javascript/html/css 寫 web app 實在不是那麼的理想(well, I’m really trying to put it very nicely here…),如果能讓開發者直接用熟悉的語言(會 php 的請舉手?ruby 呢?)一路從 backend 寫到 frontend,這不是方便許多? 3、別忘了 Tamarin Tamarin 是 Adobe 在 2006 時捐出去的一個 ECMAScript VM,目前由 Mozilla 基金會與Adobe 共同開發維護中,將來會用在 SpiderMonkey 中,並出現在下一版的 Firefox 4裏。 而 Tamarin 與 flash player 系出同門,這代表,將來 llvm 的東西也可以跑在所有支援 SpiderMonkey 的 browser 裏,至少 Firefox 就少不了,所以 nay-sayers against flash 不用急著跳著搖頭,你們也有的爽 [s:179] 4、當然也別忘了 air 對我們而言,能在 browser 裏跑 php, ruby 等其實價值不大,因為它 code base 的積體可能是個問題,但對一支 desktop app 來說,這些就不會是太大的 concern,我們可以儘情的 mashup 任何需要的語言、技術來個大鍋炒,不用重新再造輪子,這才是最有價值的地方。 *缺點? -Object model 不相容 現階段雖然可以讓 c/c++ 程式跑在 flash player 上,但它們與 actionscript 的 object model 卻完全不相容,因此要 inter-op 可能還有段路要走,但 Scott 說這件事已在進行中了。 oh, 如果你對 inter-op 不瞭解,可以想像一下 JRuby 與 Java 的運作關係,或是 Objective-C 與 C++ 的關係,就差不多是那樣。 -速度夠快嗎? LLVM interpreter 是用 as3 寫的,等於是 interpreter (flash player) 再加上 interpreter,執行速度可能是個問題(也因此 Quake 展示時它背後用的 byte array 有動過手腳,直接可 map 到 system mem 減少了一些 simulation overhead) *延伸閱讀 -名詞解釋部份 LLVM GCC LLVM 是什麼? Using LLVM, one can create a virtual machine for languages that require a code generator for a specific machine architecture, and optimizers independent from particular platforms or languages. The LLVM intermediate representation (IR) is language and architecture independent; it lies between a language-specific module and a code generator for a specific machine.
撰写答案
登录
注册新账号
关注者
0
被浏览
3.5k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5949
被采纳
77
关注TA
发私信
相关问题
1
嵌入式系统工程师行业认证
2
Google于9月2日推出出Chrome浏览器
3
开源家用类人机器人
4
今天发现CLF的IT人生版没了
5
面对多核芯片冲击,通信处理器何去何从?
6
三五个人十来条枪 如何走出软件作坊成为开发正规军[ZT]
7
老美在看什么?
8
油白菜2008来报道
9
刘军洛:中国应对世界金融危机的第二步
10
人民币兑美元大幅下跌,因中间价传出汇率政策调整信号
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部