`
allenofchina
  • 浏览: 22508 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

终于明白为什么Flash Player迟迟出不了64位版本了

阅读更多

板子要打在macromedia身上,因为在那Internet的蛮荒岁月,macromedia为了尽可能的减少swf文件的尺寸,在一部分对象中采用非字节对齐的文件格式。

简单的说,一部分对象不是以int/short这样存储的,而是以bit位这样存储的。

 

让我们看一个例子,例如Rect结构,在swf文件中的存储格式:

 

假设有一个700x350的Rectangle,在swf文件的存储如下(以2进制表示)

 

01111000,00000000,00000110,11010110,00000000,00000000,00001101,10101100,00000000,00000000,00011000,00000010,00000000,01000100,00010001,00011001

--------==============--------------------------==============--------------------------

储存每          xMin                            xMax                          yMin                       yMax

维长度

的bit数

 

Rect结构储存如下:

首5个字节代表了之后长宽高的bit数,这里是01111 ,换成10进制是15,代表后面每15个字节就是一维长度

xMin一看就知道,十进制是0

xMax的2进制表示是 011011010110 ,换成10进制是14000

yMin同样一看就知道十进制是0

yMax二进制表示是001101101011000,换成10进制是7000

 

所以这个Rectangle的四维分别是width = 14000, height=7000

 

??前面不是说长宽分别是700x350么?

 

天哪,adobe开源的swf文件格式在Using bit values里的例子有点瑕疵,所以这个问题也困扰了我半天。其实14000的单位是twips,20twips=1pixel

所以长宽仍然是14000/20 = 700, 7000/20 = 350

 

 

所以可以看出,当时macromedia在设计swf的时候,隐含就是假设一个int=32位,所以酱紫不知道怎样才可以扩展成64位。

恐怕Adobe在收购以后才发现,macromedia原来这么原始……

所以或许Adobe要重新编写虚拟机才能顺利的拓展成64位。但是从flex的sdk来看,我觉得Adobe在语言上并不擅长。

这也告诉我们,为了性能而做的bad design总会在将来的某一天成为你的梦魇。

 

好了,休息,休息一下。

分享到:
评论
6 楼 javaeyebird 2009-01-10  
allenofchina 写道
由于字体不是等宽的,所以yMax应该是蓝色背景那部分,后面7个bit是为了字节对齐,没有用,全为0,再后面的00000000,00011000是其他结构的开始。

顺带说一下,这是看SWF规范得出的结论,不是我自己瞎猜出来饿。

Flash Player for x64估计是把32位结构移植到了64位机器上,内部仍然还是32位的,理由如下:
AS3里整型只有int,32位的。Rect结构里首位5个字节最大值是31,说明Rect长宽最大只能是31位,要扩展成64位的,必须改Rect结构,这等于过去所有的SWF都要重新编译。


也许你是比较习惯c语言
为什么int就必须是机器的字长,为什么for x64就得把Rect变成64位呢?31位照样可以用
java,c#,无论什么机器,int总是32位,long总是64位,对于c,许多编译器也支持__int32和__int64,和机器无关
5 楼 oxromantic 2009-01-09  
我想,2个应该没有必然的联系
即使我64位的vm用32位的方式解释swf又如何
为什么会讨论到swf的格式呢。。
顶多就是swf不支持64位而已
4 楼 nzinfo 2008-12-17  
这个是个问题,单不是原因。
1、Flash中不需要支持64bit计算,这个目前只有科学计算才需要。So,只需要32bit就够了。
2、网络层的缩位是很常见的处理。
3 楼 allenofchina 2008-12-16  
由于字体不是等宽的,所以yMax应该是蓝色背景那部分,后面7个bit是为了字节对齐,没有用,全为0,再后面的00000000,00011000是其他结构的开始。

顺带说一下,这是看SWF规范得出的结论,不是我自己瞎猜出来饿。

Flash Player for x64估计是把32位结构移植到了64位机器上,内部仍然还是32位的,理由如下:
AS3里整型只有int,32位的。Rect结构里首位5个字节最大值是31,说明Rect长宽最大只能是31位,要扩展成64位的,必须改Rect结构,这等于过去所有的SWF都要重新编译。

2 楼 xuyao 2008-12-15  
原理也许对,但是不一定因为这个才不出flashplayer的64位版本。另外yMax后面的位数是干啥的,为啥不能用于扩展64位?才用了一半
1 楼 wosmvp 2008-12-15  
An alpha version of 64-bit Adobe Flash Player 10 for Linux operating systems was released on 11/17/2008.

相关推荐

    64位浏览器的flash插件下载(flashplayer for 64-bit browser)

    标题 "64位浏览器的Flash插件下载(flashplayer for 64-bit browser)" 指的是Adobe Flash Player的64位版本,这是一个用于在Web浏览器中播放Flash内容的插件。在过去的互联网时代,Flash是展示动画、游戏和多媒体内容...

    win7 64位Flashplayer 11

    win7 64位Flashplayer 11 Windows 7 64位系统专用。

    flash64位独立播放器 Adobe Flash Player 20.0.0.228

    它是个64位版本

    Arm64 Flashplayer Linux UOS 鲲鹏 飞腾

    标题中的"Arm64 Flashplayer Linux UOS 鲲鹏 飞腾"涉及的是在基于Arm64架构的Linux操作系统UOS(统一操作系统)上运行Flash Player的场景,特别提到了鲲鹏和飞腾这两种国产处理器平台。下面将详细阐述相关知识点: ...

    FlashPlayer11版本地播放器-精简版

    总的来说,FlashPlayer11本地播放器精简版为那些依然需要使用Flash内容的用户提供了一种简便的解决方案,它的高效、便捷和独立运行的特点使其在特定场景下仍具有一定的实用性。但随着HTML5等新技术的普及,用户也应...

    FlashPlayer29.0.0.140永不升级.zip

    众所周知 adobe flash player 已被苏-州-思-杰-马-克-丁-代-理 在flash临死前打捞一笔 目前最新版本31 会弹出 ff资讯弹窗 Flash Helper Service服务后台常驻 收集用户隐私 如果禁止 flash将不可用 现在我收集了...

    flashplayer debug 版

    Flash Player Debug版是一款专为开发人员设计的特殊版本,它允许开发者在运行含有ActionScript代码的Flash内容时进行调试。ActionScript是Adobe Flash环境中用于创建交互式内容、动画和应用程序的主要编程语言。与...

    flashplayer32_0r0_371_linuxpep.x86_64.tar.gz

    标题 "flashplayer32_0r0_371_linuxpep.x86_64.tar.gz" 提供的关键信息是这是一个针对Linux系统的Adobe Flash Player的32位PPAPI版本,其版本号为32.0.0.371。在描述中提到,这个版本是Linux用户可以使用的最后一个...

    64位 flashplayer(适合win7 、vista 64位)

    64位的 flashplayer(适合win7 、vista 64位)

    Flash Player离线安装包

    Flash Player离线安装包下载

    flashplayer-34.0.0.289独立版

    标题中的“flashplayer-34.0.0.289独立版”指的是Adobe Flash Player的一个特定版本,这是Adobe公司开发的一款广泛应用于网络上的多媒体内容播放器。Flash Player的主要功能是解析和执行SWF文件,这种文件格式通常...

    怎样在Ubuntu Linux上安装最新的FlashPlayer 10

    在安装完成后,可以在浏览器中打开相关网站来检测当前的 FlashPlayer 版本,如果安装正确的话,应该显示版本号为 LNX 10,2,151,49。 需要注意的是,这个版本只支持 32 位机器。 Adobe 公司的 FlashPlayer 是一个...

    flashplayer 10.1.102.64 for Linux 64bit

    针对Linux 64位操作系统,Adobe公司发布了FlashPlayer 10.1.102.64版本,为用户提供了流畅的多媒体体验。本文将详细介绍这个版本的特性、安装过程以及在Linux环境中的应用。 首先,FlashPlayer 10.1.102.64版是针对...

    Google Chrome 87.0.4280.141(64位)支持Adobe Flash Player的最后一个版本

    此版本的重要性在于它标志着对Adobe Flash Player的支持即将结束,因为Google Chrome 87被确认为是最后一个内置并全面支持Flash Player的版本。这个里程碑式的更新对于用户和开发者来说具有深远的影响,因为它意味着...

    FLASHPLAYER11 为火狐浏览器版本

    此FLASHPLAYER11 为火狐浏览器版本(系统32位与64位一样的。好像谷歌,欧朋通用)IE不能用。之所以放这。因常在不同电脑上用火狐浏览器,每次都要下flashplay插件要不然看不了视频类的东西。官方网站每次只下载一个...

    Macromedia Flash Player 8.0 r22

    很多的朋友反映,将喜欢的Flash动画下载到自己的电脑后总是用IE浏览器或者第三方Flash播放器才能观看,感觉不好,希望用Macromedia的Flash Player播放,可是又很难找到!现在我就发一个最新版本的给大家!不过请注意...

    64位系统的flash插件

    Adobe Flash Player Square 是Adobe 公司发布的首个位Flash版本,它支持最新发布的IE9 Beta,提供了更强大的硬件加速能力,只要支持Flash 10.1的环境下均可以兼容运行,不过并不支持Windows Xp。 Adobe Flash Player...

    flashplayer V10.1.85

    FlashPlayer V10.1.85 是一个重要的软件版本,它属于Adobe Flash Player系列,是互联网上广泛使用的多媒体内容播放器。这款软件的核心功能是播放含有Flash技术的交互式内容,如动画、视频、游戏以及丰富的互联网应用...

    最新flashplayer离线安装包下载.txt

    最新flashplayer离线安装包下载

Global site tag (gtag.js) - Google Analytics