Tamarin 101et obtenir les sources

15 views
Skip to first unread message

zwetan

unread,
Nov 8, 2006, 6:46:31 AM11/8/06
to FCNG
Meme si Tamarin ne vous interesse pas telechargez les sources :)

pour ces raisons:

- mozilla\js\tamarin\core
il y a la definition des core objects ES4/AS3
Array.as, String.as etc..
TRES interessant à lire, on en apprends bcp sur le language
ca permet de glaner quelques trucs undocumented :p

normalement c'est toutes ces class qui generent le global.abc

- mozilla\js\tamarin\esc
un compilatateur ES4 en ES4 :)
bon il n'est pas complet mais idem
TRES interessant a lire

dans le readme.txt
--------
To compile:

asc -strict -import global.abc -import shell.abc es4.as

To run:

avmplus es4.abc
--------

- mozilla\js\tamarin\extensions
definit la class flash.utils.Dictionary.as
moi perso ca m'interesse car c'est exactement le genre de
class que je m'interdisait d'utiliser dans solo par soucis de
compatiblité ES4, et que bah si cette class existe dans la
VM, ca veut dire qu'on peut l'utiliser en AS3 mais qu'on
pourra aussi l'utiliser en JS2 ou autre env qui utilisera cette VM :)
et comme cette class est TRES utile, bref ca facilite la vie

- mozilla\js\tamarin\shell
definit les class
flash.utils.ByteArray
avmplus.Domain
flash.utils.DoubleArray
flash.utils.Endian
flash.utils.FloatArray
flash.utils.IntArray
avmplus.JObject (support de JNI apparemment ?)
flash.utils.ShortArray
avmplus.StringBuilder
avmplus.System
avmplus.File (oui il y a du File IO basique :p)
flash.system.Capabilities
getClassByName()
print()
trace()
getTimer()
readLine()
flash.utils.UIntArray
flash.utils.UShortArray

qui sont utilisées dans le avmplus shell
/**
* A command-line shell around the avmplus core. This can be
* used to execute and debug .abc files from the command line.
*/

et normalement c'est toutes ces class qui generent le shell.abc

j'ai pas encore testé commment compiler tout ca avec VC++
mais normalement il y a tout ce qu'il faut dans
mozilla\js\tamarin\platform\win32
pour avec shell.vcproj generer un avmplus.exe

---------------
avmplus shell x.x build x.x

usage: avmplus
[-d] enter debugger on start
[-Ddprofile] dynamic instruction stats
[-Dsprofile] show static instruction stats
[-Dgreedy] collect before every allocation
[-Dnogc] don't collect
[-Dgcstats] generate statistics on gc
[-Dnoincgc] don't use incremental collection
[-Dastrace N] display AS execution information, where N is
[1..4]
[-Dinterp] do not generate machine code, interpret instead
[-Dverbose] trace every instruction (verbose!)
[-Dbbgraph] output MIR basic block graphs for use with
Graphviz
[-Dforcemir] use MIR always, never interp
[-Dnodce] disable DCE optimization
[-Dnocse] disable CSE optimization
[-Dnosse] use FPU stack instead of SSE2 instructions
[-Dverifyall] verify greedily instead of lazily
[-Dtimeout] enforce maximum 15 seconds execution
[-error] crash opens debug dialog, instead of dumping
[-i] interactive mode
[-log]
[-- args] args passed to AS3 program
[-jargs ... ;] args passed to Java runtime
filename.abc ...
[--] application args
---------------

et en lisant lw avmshell.cpp
normalement en fisant un
C:\>avmplus.exe -i

on obtient
---------------
(console)
ActionScript source can be directly entered on the command line
It will be compiled and executed once the enter key is pressed.
The following directives are also recognized
.run [f.as|f.abc] - runs f, compiles f.as first if required
.import f - add f to the -import list for compiling
.quit - exits this shell
.help - displays help information
---------------

bref plutot un outil sympatique qui permet de lancer des *.abc ET de
*.as directemnt :D

et surtout qui devrait se marier parfaitement avec ASC
---------------
C:\Flex SDK 2\lib>java -jar asc.jar
ActionScript 3.0 for AVM+
version 1.0 build d628
Copyright (c) 2003-2004 Macromedia, Inc.
Copyright (c) 1998-2003 Mountain View Compiler Company
All rights reserved

Usage:
asc {-AS3|-ES|-d|-f|-h|-i|-import <filename>|-in <filename>|-m|-p}*
filespec
-AS3 = use the AS3 class based object model for greater performance
and better error reporting
-ES = use the ECMAScript edition 3 prototype based object model to
allow dynamic overriding of pro
totype properties
-d = emit debug info into the bytecode
-f = print the flow graph to standard out
-h = print this message
-i = write intermediate code to the .il file
-import <filename> = make the packages in the
specified file available for import
-in <filename> = include the specified filename
(multiple -in arguments allowed)
-m = write the avm+ assembly code to the .il file
-p = write parse tree to the .p file
-md = emit metadata information into the bytecode
-warnings = warn on common actionscript mistakes
-strict = treat undeclared variable and method access as errors
-sanity = system-independent error/warning output -- appropriate for
sanity testing
-log = redirect all error output to a logfile
-exe <avmplus path> = emit an EXE file (projector)
-swf classname,width,height[,fps] = emit a SWF file
-language = set the language for output strings
{EN|FR|DE|IT|ES|JP|KR|CN|TW}
---------------

hehe, en gros tout ceci devrait nous permettre
de generer des *.abc reutilisés dans une lib *.swf (et donc euh
modifier des core class comme String :p)
et pouvoir generer un exe , et peut-etre meme ne ligne de commande
voir: -exe <avmplus path> = emit an EXE file (projector)


j'ai pas le temps de le faire mais en fait il manque plus qu'un petit
tuto
pour compiler tout ca avec Visual Studio C++ express (qui est gratuit
:p)

EN:
http://msdn.microsoft.com/vstudio/express/visualc/download/

FR:
http://www.microsoft.com/france/msdn/vstudio/express/visualc/telechargez.mspx

zwetan

zwetan

unread,
Nov 8, 2006, 6:50:46 AM11/8/06
to FCNG

ah oui j'oubliais

depuis TortoiseCVS impossible de telecharger les sources depuis CVS

mais voila comment faire sous windows eb ligne de commande

1) trouvez votre path CVS
si vous avez TortoiseCVS
moi par ex: "C:\dev\TortoiseCVS"

2) dans un prompt
definissez ce path
C:\mozilla_src>path C:\dev\TortoiseCVS

3) et faites un checkout
C:\mozilla_src> cvs -d
:pserver:anonymous:anon...@cvs-mirror.mozilla.org:/cvsroot co
mozilla/js/tamarin


vous devriez obtenir cette arbo

C:\mozilla_src>
|_ mozilla
|_ js
|_ tamarin

;)
zwetan

zwetan

unread,
Nov 8, 2006, 8:14:25 AM11/8/06
to FCNG

tiens un link interessant qu'on voit pas trop dans les blogs

Chris Payer d'Adobe
a lancé une comparasion
de la vitesse d'execution entre avmplus (Tamarin) et SpiderMonkey
http://www.playercore.com/pub/Tamarin/Avmplus_vs._javascript.htm

hehe :)

Philippe

unread,
Nov 8, 2006, 8:14:40 AM11/8/06
to FCNG
Oui, tout ça m'intéresse beaucoup - surtout les sources .AS et le
code pour (dé)compiler les .ABC
http://www.flashdevelop.org/community/viewtopic.php?t=1060

zwetan

unread,
Nov 8, 2006, 8:28:43 AM11/8/06
to FCNG

> Oui, tout ça m'intéresse beaucoup - surtout les sources .AS et le
> code pour (dé)compiler les .ABChttp://www.flashdevelop.org/community/viewtopic.php?t=1060

bah regarde dans
mozilla_js\mozilla\js\tamarin\utils

il y a une class tres sympatique abcdump.as
:D

et ca gere tout : SWF, ABC,
les versions de SWF aussi :p

moi je dis que humm un
playerglobal.swc --unzip--> library.swf
avec un abcdump derriere devrait donner des infos interessantes :P

et pis au pire, le abcdump ca doit pas etre tres dur a porter en C# par
exempl
pour avoir ca en natif dans FD ;)

zwetan

Philippe

unread,
Nov 8, 2006, 9:34:44 AM11/8/06
to FCNG
Mmm... bien vu le abcdump.as

J'ai déjà fait ce qu'il faut pour extraire les ABC des SWFs (c'est la
partie facile) et il me reste a récup les métadonnées des ABC. Il y
a un bien tamarin/core/abcFormat.txt qui décrit le format ABC, mais si
le code est déjà écrit c'est tout bénef'.

Bref, plein d'amusement en perspective :)

zwetan

unread,
Nov 8, 2006, 3:08:21 PM11/8/06
to FCNG

>
> depuis TortoiseCVS impossible de telecharger les sources depuis CVS
>
> mais voila comment faire sous windows eb ligne de commande
>
> 1) trouvez votre path CVS
> si vous avez TortoiseCVS
> moi par ex: "C:\dev\TortoiseCVS"
>
> 2) dans un prompt
> definissez ce path
> C:\mozilla_src>path C:\dev\TortoiseCVS
>
> 3) et faites un checkout
> C:\mozilla_src> cvs -d
> :pserver:anonymous:anonym...@cvs-mirror.mozilla.org:/cvsroot co
> mozilla/js/tamarin
>

et note si vous ne voullez que les sources et pas le versioning CVS
faites plutot un

C:\mozilla_src>cvs -d
:pserver:anonymous:anon...@cvs-mirror.mozilla.org:/cvsroot export -r
HEAD mozilla/js/tamarin

zwetan

unread,
Nov 20, 2006, 3:59:25 AM11/20/06
to FCNG
petite ressource interessantes en +

via http://www.deitte.com/archives/2006/11/tamarin_as_30_c.htm

on a un commentaire trers interessant de
Dan Smith, Adobe's Director of Engineering

sur le forum Artima
http://www.artima.com/forums/flat.jsp?forum=276&thread=183880

et sinon de la doc pour compiler ici
http://developer.mozilla.org/en/docs/Tamarin

Reply all
Reply to author
Forward
0 new messages