ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
XÂY DỰNG ĐỒ HỌA 3D DỰA TRÊN CÔNG NGHỆ
FLASH DÀNH CHO THIẾT BỊ NHÚNG
PHƯƠNG PHÁP XỬ LÝ 3D CỦA PAPERVISION3D
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
i
Lời cám ơn
Trưóc tiên, em muon gúi lòi cám ơn sâu sac nhat đen hai thay giáo. Các thay đã tận
tình hưóng dan chúng em
trong hoc tập, đong thòi tao đieu kiện trong công việc nghiên
cúu tai phòng thí
nghi¾m Toshia- Coltech suot hai năm qua.
Chúng em xin bày tó lòng cám ơn đen nhung thay cô giáo công tác, giáng day
tai trưòng đai hoc Công Ngh¾ - Đai hoc Quoc Gia Hà N®i. Nhung kien thúc, phương
pháp qúy báu thay cô truyen đat se là hành trang giúp chúng em vung bưóc trong
tương
lai.
Tôi xin cám ơn các thành viên phòng thí nghi¾m Toshiba-Coltech, các ban đã
cho tôi nhieu ý kien qúy báu khi thnc hi¾n khóa lu¾n.
Cuoi cùng con xin gúi tói bo me và toàn the gia đình lòng biet ơn và tình cám
yêu thương sâu sac nhat.
i
Tóm tat n®i dung
Ngày nay, thiet b% di đ®ng tró nên pho bien và mang lai nhieu ti¾n ích trong cu®c
song. Vói sn phát trien cúa đo hoa máy tính, giao di¾n các úng dnng ngày càng đep mat
và thân thi¾n vói ngưòi dùng. Đo hoa ba chieu đưoc sú dnng r®ng rãi trên máy tính
cá
nhân hay nhung thiet b% có cau hình manh và mang lai hi¾u quá to lón. Tuy nhiên,
thiet
b% nhúng có cau hình thap hơn bói v¾y chúng ta can phái xây dnng h¾ thong phù
hop đe
đáp úng đưoc nhu cau ve toc đ® xú lý và hien th%.
Khóa lu¾n t¾p trung tìm hieu phương pháp xú lý đo hoa 3D cho thiet b% di đ®ng.
i
Mnc lnc
1 Đ¾t van đe
1
1.1
Thnc trang
1
1.2
Pham vi nghiên cúu
2
1.3
Các h tiep c¾n
3
1.4
Cau
t r
úc
khoá
lu¾n
3
2 Cơ sé lý thuyet
4
2.1
Công ngh¾ Flash
4
2.1.1
Giói thi¾u
4
2.1.2
Ngôn ngu
ActionScr ipt
5
2.1.3
T ¾p tin SWF
5
2.1.4
Flash
Pla yer
6
2.2
Gnash
7
2.2.1
Giói thi¾u
7
2.2.2
Mô hình x ây dnng
8
2.2.3
Cơ c he hoat đ®ng
8
2.3
T ama r
in - A VM2
9
2.3.1
Giói thi¾u
9
2.3.2
Kien
trúc,
nguyên
lý
hoat
đ®ng
9
2.3.3
B® biên d%c h
JIT
11
2.3.4
B®
thông
d%c h
12
2.3.5
Quán
lý
b®
nhó
12
i
2.4
Papervision3D
15
i
MUC LUC
2.4.1
Giói thi¾u . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.2
Kien trúc, thành phan
. . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.3
M®t so ket lu¾n . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 22
2.5
Môi
trưòng
đo
hoa
OpenGLES
trên
Po w erVR 23
3 Ky thu¾t xN lý đo hoa 3D Flash
25
3.1
Mô tá
bài
toán
25
3.2
Mô hình đe xuat
25
3.2.1
Ý tưóng
25
3.2.2
Giái pháp
26
4
ThNc
nghi¾m
27
4.1
Ket quá
thnc
thi
28
4.1.1
Cau
tao
cúa
ABC
28
4.1.2
Cau hình phan cúng can thiet
28
4.2
Minh hoa thnc nghi¾m
28
5 Ket lu¾n và hưéng phát trien
30
5.1
Ket lu¾n
30
5.2
Hưóng phát trien
30
A
Kieu v à t
¾p l¾nh t r ong A VM2
31
A.1
M®t so kieu du li¾u trong A VM2
31
A.2
T óm
tat
t¾p
l¾nh
A VM2
31
B Công cn Abcdump / Tamarin
33
C Mã nguon c hương trình Papervision3D
35
Tham kháo
36
iv
Danh sách hình ve
1.1
Bieu đo hien
th%
tr
nc q uan 3D
1
1.2
T ong q uan dn án
2
2.1
Cau
t r
úc
t¾p
Flash
5
2.2
Minh
hoa
thé
trong
t¾p
SWF
6
2.3
Hoat đ®ng cúa A dobe Flash Pla yer phiên bán 9
7
2.4
Mô hình Flash player thnc thi Papervision3D
8
2.5
Cơ c he hoat đ®ng cúa Gnash
9
2.6
Kien t r
úc A VM
10
2.7
Minh
hoa
đoan
mã
đưoc
thnc
thi
bói
A VM2
11
2.8
Hoat đ®ng cúa N anojit trong tamarin
12
2.9
Minh hoa thu¾t toán mark/sw eep
13
2.10
Loi
tham c hieu
vòng
14
2.11
Sú
dnng
thu¾t
toán
ba
màu
15
2.12
K y
thu¾t
đo
hoa
3D
trong
đo
hoa
máy
tính
16
2.13
Mô hình x ây dnng thư vi¾n Papervision3D
17
2.14
Thành phan 3D trong đo hoa máy tính
17
2.15
Quan h¾ giua các g ói trong Papervision3D
19
2.16
Scene3D
19
2.17
Camera trong Papervision3D
21
2.18
Vie wport trong Papervision3D
21
2.19
Xâ y
dnng
R ender
22
3.1 Mô hình ket hop tamarin và Gnash
26
v
DANH SÁCH HÌNH VE
4.1
Mô
hình
xú
l ý
3D
28
4.2
Thnc
thi
3D
cúa
Papervision3D
trên
Flash
Pla yer
29
vi
Báng tN viet tat
Ký hi¾u Dang đay đú
2D
2 Dimension
3D
3 Dimension
ABC
ActionScript Bytecode
AVM
ActionScript Virtual Machine
AS
ActionScript
JIT
Just-In-Time
MMgc
Memory manager, garbage collector
OpenGL Open Graphics Library
OpenGLES
OpenGL Embeded Systems
SWF
Small Web Format
VM
Virtual Machine
v
C
HƯƠNG
1
Đ¾t van đe
1.1 ThNc trang
Ngày nay các thiet b% đi¾n tú tró nên pho bien và mang lai nhieu loi ích trong cu®c
song. Tù nhung h¾ thong công c®ng, d%ch vn tn đ®ng như bán vé tàu xe cho đen các
thiet b% trong gia đình như tivi, máy gi¾t, tú lanh th¾m chí đen tùng cá nhân như
đi¾n
thoai di đ®ng, PDAs
1
. Vói sn phát trien cúa công ngh¾, úng dnng đo hoa trên trên
các
thiet b% nhúng ngày càng đòi hói cao ve toc đ® xú lý, khá năng tương tác nhanh và
đáp
úng đưoc nhu cau cúa ngưòi dùng. Đ¾c bi¾t, sú dnng đo hoa 3D cho các úng dnng
mang lai nhieu hi¾u quá ve tính thân thi¾n, de sú dnng, và đep mat. Flash là m®t công
ngh¾ có nhieu ưu điem đe phát trien trên các thiet b% nhúng bói tính gon nhe, đơn
gián,
hơn nua Flash ho tro đo hoa 3D khá tot. Hình 1.1 minh hoa úng dnng bieu đo sú
dnng
phương pháp hien th% trnc quan 3D.
Hình 1.1: Bieu đo hien
th%
trnc quan 3D
1
Personal Digital Assitants
1
1.2 Pham vi nghiên cNu
Khóa lu¾n này đưoc trình bày trong khuôn kho dn án xây dnng h¾ thong xú lý
đo hoa 3D và framework sú dnng các thu¾t toán xú lý, sap xep du li¾u. Mnc tiêu khóa
lu¾n là chúng minh đưoc tính khá thi cũng như tính công ngh¾ áp dnng trong dn án.
Dn án đưoc đe xuat thnc hi¾n trong thòi gian 3 vói các giai đoan như sau:
•
Giai đoan m®t: hưóng vào nghiên cúu phát trien 3D Flash cho thiet
b%
di đ®ng.
Sú dnng Gnash làm máy Flash trên “Beagle Board”
2
môi trưòng Linux ho tro đo
hoa
OpenGLES.
•
Giai đoan hai: xây dnng các thu¾t toán, mau xú lý du li¾u 3D.
•
Giai đoan ba: làm m%n các ket quá ó giai đoan hai.
Input
Flash code
Visualization
data
Flash Engine 3D
Framework
User
Interface
(Using Flare)
Output
Using Gnash
Papervision3D
3D data visualization
3D visualization
algorithm
Data analysis
Screen resolution
OpenGL/ES 2.0 Environment
LINUX OS
Beagle Board
Hình 1.2: Tong quan dn án
Trong giai đoan đau tiên, chúng tôi hưóng đen phương pháp xú lý đo hoa 2D,
3D
Flash dna vào OpenGLES trên h¾ thong nhúng.
2
/>CHƯƠNG 1: Đ¾T VAN
1
1.3
Cách tiep c¾n
Trưóc het, đe hieu đưoc ve công ngh¾ Flash, chúng tôi
3
t¾p trung vào thành
phan
liên quan bao gom: ngôn ngu AS, trình chơi Flash
4
, máy áo, t¾p tin. Tuy
nhiên,
công ngh¾ Flash cúa Adobe khép kín và mang tính thương mai nên gây cán
tró cho
vi¾c tìm hieu. Nguon tài li¾u tham kháo rat han che. Do v¾y, lna chon cúa
chúng tôi là
tiep c¾n nhung phan mem nguon mó, dna vào đó đe phát trien cho dn án.
1.4 Cau trúc khoá lu¾n
Các phan còn lai cúa khóa lu¾n có cau trúc như sau:
•
Chương 2 là cơ só lý thuyet công ngh¾ Flash, mô hình và nguyên tac hoat đ®ng
cúa các dn án nguon mó chúng tôi quan tâm: Gnash, Tamarin, Papervision3D.
•
Chương 3 mô tá bài toán xú lý 3D Flash trên thiet b% di đ®ng, đong thòi đe xuat
ý
tưóng, giái pháp và mô hình cho bài toán đó.
•
Chương 4 trình bày ve thnc nghi¾m đe chúng minh tính khá thi, đúng đan cho
giái pháp đã nêu trong chương 3.
•
Chương 5 tong ket nhung gì đã đat đưoc trong quá trình nghiên cúu, đong thòi
đưa ra hưóng phát trien trong giai đoan tiep theo.
3
Nhóm sinh viên nghiên cúu tai phòng thí nghi¾m Toshiba-Coltech
4
Flash Player
C
HƯƠNG
2
Cơ sé lý thuyet
Đe giái quyet bài toán trong khóa lu¾n này, chúng tôi tìm hieu m®t so van đe ve
lý thuyet: công ngh¾ Flash, trình chơi Flash nguon mó - Gnash[1], máy áo
Tamarin, Papervision3D[2]-thư vi¾n Flash nguon mó và môi trưòng đo hoa
OpenGLES trên h¾ thong nhúng.
Các phan mem, dn án nguon mó trong pham vi dn án có rat ít tài li¾u kèm theo.
Do
v¾y, vi¾c tìm hieu các van đe lý thuyet liên quan tói các mã nguon mó cũng là
công vi¾c
chúng tôi tn khám phá, và xây dnng lai các mô hình dna trên nhung nghiên
cúu đó.
2.1 Công ngh¾ Flash
2.1.1
Giéi thi¾u
Flash[3] là nen đa phương ti¾n đưoc phát trien tù ngôn ngu C++, dùng đe đưa
các úng dnng hoat hoa, video và tương tác vào các trang Web. Flash là công ngh¾
khép kín, thương mai hóa, đưoc phân phoi và phát trien bói Adobe
1
. Flash thưòng
đưoc sú dnng cho quáng cáo và trò chơi đi¾n tú. Flash dùng ky thu¾t đo hoa véc tơ
đe tao hoat hoa. Flash ho tro hai luong âm thanh, hình ánh đong thòi xú lý sn ki¾n vói
đau vào là tương tác ngưòi dùng thông qua thiet
b%
ngoai vi.
Các t¾p Flash thnc thi đưoc trên Flash Player ó nhieu nen táng h¾ đieu hành
(Win- dows, Linux, Mac OS). Ngôn ngu tao Flash là AS[4]
1
Công ty lón chuyên ve phan mem xú lý đo hoa
4
2.1.2
Ngôn ngÑ ActionScript
AS là ngôn ngu theo k%ch bán dna vào ECMAScript, đưoc thiet ke bói công
ty Macromedia
2
. Hi¾n tai, AS đưoc só huu bói Adobe. Tù năm 1998 đen nay, ngôn ngu
AS đã có ba phiên bán. Phiên bán mói nhat ActionScript 3.0 có nhieu cái tien và khác
bi¾t hoàn toàn so vói hai phiên bán trưóc đó.
L¾p trình ngôn ngu AS tao ra đưoc chương trình là các t¾p SWF ve giái trí, đo
hoa
thông qua các công cn phát trien l¾p trình và b® biên d%ch asc
3
.
2.1.3
T¾p tin SWF
T¾p SWF[5] có đ%nh dang t¾p nham đưa các du li¾u đo hoa véc tơ, văn bán,
phim hình và âm thanh lên Internet. Flash Player là phan mem ho tro chơi t¾p SWF,
Gnash cũng là phan mem nguon mó chúc năng tương tn.
Đ%nh dang t¾p SWF đưoc thiet ke ti¾n dnng cho vi¾c truyen du li¾u qua
mang Internet, không phái cho chuyen đoi đo hoa giua các trình chính súa. Phiên bán
hi¾n tai cúa SWF là 10 tương úng vói Flash Player 10 cúa hãng Adobe. T¾p Flash có
the đưoc tao ra tù nhung công cn l¾p trình cúa Adobe như: Flash, Flex Builder (sú
dnng b® biên d%ch asc).
Cau trúc cúa t¾p Flash bao gom phan Header, các thé đieu khien (control tag) và
thé đ%nh nghĩa (Definition tag) như trên hình 2.1
•
Thé đ%nh nghĩa xác đ%nh đ¾c điem cúa đoi tưong (đ¾c điem này lưu tru trong
tù đien).
•
Thé đieu khien chúa cách đieu khien các luong, quán lý m¾t tong the, các khung
hình và cách thnc thi t¾p.
•
Trình chơi Flash xú lý tat cá các thé cúa t¾p SWF cho đen khi goi thé ShowFrame.
Tai thòi điem này, danh sách hien th% (Display List) đưoc chuyen đen màn hình
và trình chơi chò xú lý khung hình tiep theo.
Header
File Attribute
tag
Tag Tag Tag
Tag
Hình 2.1: Cau trúc t¾p Flash
CHƯƠNG 2: CƠ S6 LÝ
1
Hình 2.2 minh hoa các thé trong t¾p SWF sau khi đưoc phân tích dưói dang
XML
và tách ra dang ABC. Chúng ta có the nh¾n thay cau trúc này bao gom tuan tn
các
thé
2
Công ty sán xuat phan mem xú lý đo hoa
3
ActionScript Compiler
CHƯƠNG 2: CƠ S6 LÝ
1
liên tiep và giá tr%. Ví dn như thé tiêu đe (header) có các thu®c tính chính cho t¾p
Flash là so lưong khung hình, tí l¾ khung. Thé thu®c tính t¾p (file attribute tag) chí có
ó SWF phiên bán 8 tró đi.
6
hình 2.2 thay thé DoABC, thé này chúa thông tin ve các
hang, thé DoABC chí có ó AS 3.
Hình 2.2: Minh hoa thé trong t¾p SWF
2.1.4 Flash Player
Flash Player [6] là phan mem chơi các
t¾p
SWF, đưoc sú dnng trong trình
duy¾n
Web ho¾c cài
đ¾t
trnc tiep trên
h¾
đieu hành. Flash Player dùng ky thu¾t hien
th%
đo hoa
véc tơ đe giám thieu toi đa dung lưong t¾p, sú dnng ít băng thông mang và
giám thòi
gian tái t¾p. Nhieu trình duy¾t hi¾n nay ho tro vi¾c cài
đ¾t
Flash Player làm
trình
chơi
t¾p
SWF như: Mozilla Firefox, Safari, IE, Opera. Flash Player có nhieu
phiên bán
tương thích vói các nen táng, kien trúc khác nhau trên máy tính hay thiet
b%
di đ®ng.
Nguyên tac hoat đ®ng chung
Tù năm 2006, tương úng vói ngôn ngu AS 3.0 là Flash Player phiên bán 9.
Quá trình thnc thi t¾p Flash bói Flash Player 9 dưói hình 2.3 như sau:
•
Đau tiên t¾p SWF đưoc phân tích ra làm 2 thành phan ABC và Control Tags
(các tag đieu khien).
•
Tiep theo phan ABC đưoc chuyen cho máy áo AVM thnc thi (gom AVM1
và AVM2), vi¾c xác đ%nh phiên bán cúa ngôn ngu AS tưng úng vói ABC se
quyet
đ%nh giao quyen xú lý cho máy áo nào.
•
Sau đó, các thé đieu khien đưoc đưa vào Display List
4
.
•
Cuoi cùng, ket quá xú lý cúa máy áo ket hop vói Display List chuyen sang bưóc
ve đau ra cho chương trình.
Hình 2.3: Hoat đ®ng cúa Adobe Flash Player phiên bán
9
Hoat đ®ng cúa Flash Player véi Papervision3D
Flash Player ho tro thnc thi Papervision3D vì nó có hai máy áo hoat đ®ng bên
trong. Máy áo thnc thi 3D Flash là AVM2. Hình 2.4 minh hoa cơ chet hoat đ®ng
cúa Flash Player thnc thi 3D Flash - Papervision3D.
2.2 Gnash
2.2.1
Giéi thi¾u
Gnash là m®t úng dnng nguon mó đưoc phát trien bói dn án GPLFlash. Phan
mem này thnc thi các t¾p tin Flash đ®c l¾p ho¾c là plug-in
5
đe thnc thi Flash đưoc
nhúng vào Web. Chúc năng cúa Gnash cũng như Adobe Flash Player đã giói thi¾u ó
trên.
4
Thành phan trong xú lý Flash
5
Phan mem cài thêm vào trình duy¾n
Papervision3D Code
Flex Builder (Flex SDK)
Papervsion3D
AVM1
AS1,2
SWF
Displaying
Tamarin-AVM2
AS3
Hình 2.4: Mô hình Flash player thnc thi Papervision3D
Gnash đưoc giói thi¾u lan đau tiên vào năm 2005 bói John Gilmore[1] và
đúng
đau nhóm phát trien là Rob Savoye[1].
2.2.2 Mô hình xây dNng
Mô hình xây dnng đưoc đe c¾p chi tiet trong khóa lu¾n cúa ban Đinh Anh
Thái, ngưòi cùng tôi tham gia nghiên cúu trong dn án này. Nhò nhung ket quá tìm
hieu ve Gnash cúa ban, tôi mô hình cách xú lý Flash cúa Gnash ó phan tiep theo.
2.2.3
Cơ che hoat đ®ng
Gnash xây dnng hai máy áo đe thnc thi ABC. Máy áo AVM1 ho tro xú lý AS
1.0,
2.0, máy áo AVM2 chưa ho tro het cho AS 3.0. Do đó, vói 2D Flash hien th% đưoc
đưoc trên Gnash còn Papervision3D và đa so chương trình AS 3.0 là không.
Gnash nh¾n đau vào là t¾p SWF, sau khi đi qua b® swfparser, tách đưoc thành
phan cúa ABC. Sau đó, các thành phan ABC se đưoc xú lý bói máy áo AVM
6
. Cuoi
cùng, đau ra cúa máy áo ket hop vói phan hien th% cúa Gnash là ket quá cúa chương
trình. Hình 2.5 mô tá hoat đ®ng cúa Gnash
6
Se đưoc nêu rõ trong phan tiep theo
SWF swf parser
abc parser
Gnash
render
Displaying
Events
AMV1
Virtual Machine
AVM2
AS1,2
AS3(not full)
Hình 2.5: Cơ che hoat đ®ng cúa Gnash
2.3 Tamarin - AVM2
2.3.1
Giéi thi¾u
Tamarin là 1 dn án nguon mó cúa Mozilla
7
. Mnc đích cúa dn án là xây dnng máy
áo AVM2[7] thnc thi ngôn ngu AS 3.0 vói hi¾u suat cao. Máy áo Tamarin đưoc sú
dnng bên trong phan mem Adobe Flash Player đã đe c¾p ó trên, và còn có the đưoc
sú dnng vói các dn án khác ngoài Adobe. Mnc đích cúa Mozilla là xây dnng tamarin đe
đưa vào bên trong Mozilla TraceMonkey - máy JavaScript dùng cho trình duy¾t
Web Mozilla Firefox.
8
Ngoài ra, mnc đích dn án Tamarin là ho tro đa nen táng phan cúng, bao gom cá
ARM
9
. Cho b® vi xú lý x64 và h¾ đi¾n toán 64 bit vói 2 mnc tiêu: cái tien hi¾u năng
thòi điem thnc thi (run-time) và phát trien b® biên d%ch ó thòi điem thnc thi (run-time
compiler).
2.3.2 Kien trúc, nguyên lý hoat đ®ng
Máy áo Tamarin - AVM2 nh¾n đau vào là t¾p ABC
10
thu đưoc sau khi phân
tích t¾p Flash. B® .abc parser phân tích tiep t¾p ABC đe lay ra nhung mã bytecode đe
chyen cho quá trình xác thnc tiep theo Bytecode Verifier. Tai đây, nhung mã
Bytecode chúa l¾nh đơn gián se đưoc b® thông d%ch -Interpreter xú lý và nhung mã
chúa l¾nh phúc tap se chuyen sang cho b® biên d%ch JIT - JIT Compiler. Ket thúc quá
trình này, máy áo se chuyen sang thnc thi đoi tưong trên h¾ thong th¾t, chuyen toàn
b®
các l¾nh trên máy áo sang cho b® xú lý cúa máy th¾t và đưoc quán lý b® nhó -
Memory Manager /Garbage Collector. Các bưóc thnc hi¾n trên đưoc minh hoa ó hình
2.6
7
http://www .mozilla.or g/
8
Trình duy¾n Web pho bien hi¾n nay
9
B® xú lý cho thiet b% nhúng
10
có dang *.abc
SWF ABC
.abc parser
JIT Compiler
Bytecode Verifier
MIR Code Generator
Interpreter
(x86, PPC, ARM, etc.)
Runtime System
(Type System, Object Model)
Memory Manager / Garbage Collector
Hình 2.6: Kien trúc AVM
Thnc thi t¾p Flash qua nhieu giai đoan, chi tiet như sau. Đau tiên, tù mã nguon
AS đưoc tao ra bói ngưòi l¾p trình, tiep theo trình biên d%ch asc cúa FlexSDK sú dnng
và tao ra mã trung gian có trong t¾p ABC và MIR. Các mã trung gian vói mnc đích tao
ra tính di đ®ng cho chương trình Flash mà không phn thu®c vào nen táng h¾ đieu
hành khác nhau. Tù các mã trung gian này, b® biên d%ch JIT sinh ra mã th¾t tùy thu®c
vào nen táng b® xú lý cúa phan cúng sú dnng. Ví dn 2.7 minh hoa quá trình chuyen đoi,
sinh mã trung gian và mã máy cho hai b® xú lý khác nhau.
Đe hieu thêm ve t¾p l¾nh và kieu du li¾u, có the xem ó phn lnc A
MIR là mã trung gian dùng trong AVM, mã này đ®c l¾p vói mã máy th¾t. Ưu
điem
cúa MIR là đơn gián, gan vói mã máy v¾t lý, là thành phan trung gian giua
bytecode. MIR đưoc thiet ke đe toi ưu quá trình biên d%ch giua mã chương trình vói
mã
máy, do đó vi¾c l¾p trình trên nen táng h¾ đieu hành không
b%
ràng bu®c bói môi
trưòng.
T¾p ABC đưoc xú lý AVM2 qua bon bưóc chính gom nap, liên ket, xác thnc
và thnc thi như sau:
•
Quá trình nap, t¾p ABC đưoc đoc vào b® nhó, giái mã và phân tích;
•
Trong quá trình liên ket, m®t so tên đưoc tham chieu tù vùng riêng cúa cau trúc
t¾p ABC đe xú lý và sau đó trá lai ket quá là m®t cau trúc du li¾u phúc tap hơn rat
nhieu
AS3.0
function (x:int) : int
{
return x+10
}
.abc
getlocal 1
pushint 10
add
returnvalue
MIR
@1 arg + 8 //argv
@2 load [@1+4]
@3 imm 10
@4 add (@2, @3)
@5 ret @4 // @4: eax
x86
mov eax,
(eap+8)
mov
eax, (eax+4)
add
eax, 10
ret
ARM
mov r0,
#(eap+8)
mov
r1, #r0
add r2, r0,
r1
ret
Hình 2.7: Minh hoa đoan mã đưoc thnc thi bói AVM2
liên ket các đoi tưong cùng nhau;
•
Quá trình xác thnc là tương tác giua đoi tưong, đoi tưong phái đưoc goi tưòng
minh;
•
Quá trình thnc thi, mã bytecode trong t¾p ABC đưoc biên d%ch trong quá trình
tính toán. Vi¾c xác thnc vói các luong l¾nh xáy ra liên tnc: l¾nh này không đưoc
nam ngoài máng bytecode;
•
Quá trình xác thnc đưoc thnc hi¾n ó tat cá các bưóc trên. Tai moi bưóc, neu
xuat hi¾n loi, AVM đưa ra thông đi¾p Verify Error đe có the bat loi chương
trình;
Trong phan tiep theo se đi sâu vào cơ che hoat đ®ng cúa các thành phan chính
mà chúng liên quan đen hi¾u suat cúa máy áo Tamarin-AVM2.
2.3.3
B® biên d%ch JIT
Giéi thi¾u
M®t h¾ thong can chuyen mã b¾c cao ho¾c mã bytecode sang mã máy ó thòi
điem
thnc thi, chí ngay trưóc khi goi đoan mã đó. Biên d%ch JIT[8] là ky thu¾t chính
đưoc
cài đ¾t ó hau het các máy áo cúa Microsoft .NET
11
và Java
12
. B® biên d%ch
này
đưoc sú dnng nhieu trong các dn án cúa Mozilla và có tên Naojit[9].
Nanojit là thư vi¾n C++ thnc thi đa nen táng, nhi¾m vn cúa nó là sinh ra mã máy.