intTypePromotion=1

LUẬN VĂN: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

Chia sẻ: Lan Lan | Ngày: | Loại File: PDF | Số trang:45

0
100
lượt xem
33
download

LUẬN VĂN: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

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Ngày nay, thiết bị di động trở nên phổ biến và mang lại nhiều tiện ích trong cuộcsống. Với sự phát triển của đồ họa máy tính, giao diện các ứng dụng ngày càng đẹp mắtvà thân thiện với người dùng. Đồ họa ba chiều được sử dụng rộng rãi trên máy tính cánhân hay những thiết bị có cấu hình mạnh và mang lại hiệu quả to lớn. Tuy nhiên, thiếtbị nhúng có cấu hình thấp hơn bởi vậy chúng ta cần phải xây dựng hệ thống phù hợp đểđáp ứng được nhu cầu về tốc độ xử lý...

Chủ đề:
Lưu

Nội dung Text: LUẬN VĂN: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

  1. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Lê Viết Sơn 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 HÀ NỘI - 2010
  2. L i c m ơn Trư c tiên, em mu n g i l i c m ơn sâu s c nh t đ n hai th y giáo PGS-TS Nguy n Vi t Hà và Th.S Vũ Quang Dũng. Các th y đã t n tình hư ng d n chúng em trong h c t p, đ ng th i t o đi u ki n trong công vi c nghiên c u t i phòng thí nghi m Toshia- Coltech su t hai năm qua. Chúng em xin bày t lòng c m ơn đ n nh ng th y cô giáo công tác, gi ng d y t i trư ng đ i h c Công Ngh - Đ i h c Qu c Gia Hà N i. Nh ng ki n th c, phương pháp qúy báu th y cô truy n đ t s là hành trang giúp chúng em v ng 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 b n đã cho tôi nhi u ý ki n qúy báu khi th c hi n khóa lu n. Cu i cùng con xin g i t i b m và toàn th gia đình lòng bi t ơn và tình c m yêu thương sâu s c nh t. Hà N i, 19 tháng 5 năm 2010 Sinh viên Lê Vi t Sơn i
  3. Tóm t t n i dung Ngày nay, thi t b di đ ng tr nên ph bi n và mang l i nhi u ti n ích trong cu c s ng. V i s phát tri n c a đ h a máy tính, giao di n các ng d ng ngày càng đ p m t và thân thi n v i ngư i dùng. Đ h a ba chi u đư c s d ng r ng rãi trên máy tính cá nhân hay nh ng thi t b có c u hình m nh và mang l i hi u qu to l n. Tuy nhiên, thi t b nhúng có c u hình th p hơn b i v y chúng ta c n ph i xây d ng h th ng phù h p đ đáp ng đư c nhu c u v t c đ x lý và hi n th . Khóa lu n t p trung tìm hi u phương pháp x lý đ h a 3D cho thi t b di đ ng. ii
  4. M cl c 1 Đ tv nđ 1 1.1 Th c tr ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Ph m vi nghiên c u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Cách ti p c n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 C u trúc khoá lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Cơ s lý thuy t 4 2.1 Công ngh Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1 Gi i thi u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.2 Ngôn ng ActionScript . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 T p tin SWF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.4 Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Gnash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.1 Gi i thi u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.2 Mô hình xây d ng . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.3 Cơ ch ho t đ ng . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Tamarin - AVM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.1 Gi i thi u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.2 Ki n trúc, nguyên lý ho t đ ng . . . . . . . . . . . . . . . . . . . 9 2.3.3 B biên d ch JIT . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3.4 B thông d ch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.5 Qu n lý b nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 Papervision3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 iii
  5. M CL C 2.4.1 Gi i thi u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.2 Ki n trúc, thành ph n . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.3 M t s k t lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5 Môi trư ng đ h a OpenGLES trên PowerVR . . . . . . . . . . . . . . . 23 3 K thu t x lý đ h a 3D Flash 25 3.1 Mô t bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2 Mô hình đ xu t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.1 Ý tư ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.2 Gi i pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4 Th c nghi m 27 4.1 K t qu th c thi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.1.1 C u t o c a ABC . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.1.2 C u hình ph n c ng c n thi t . . . . . . . . . . . . . . . . . . . . 28 4.2 Minh h a th c nghi m . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5 K t lu n và hư ng phát tri n 30 5.1 K t lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2 Hư ng phát tri n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 A Ki u và t p l nh trong AVM2 31 A.1 M t s ki u d li u trong AVM2 . . . . . . . . . . . . . . . . . . . . . . . 31 A.2 Tóm t t t p l nh AVM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 B Công c Abcdump / Tamarin 33 C Mã ngu n chương trình Papervision3D 35 Tham kh o 36 iv
  6. Danh sách hình v 1.1 Bi u đ hi n th tr c quan 3D . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 T ng quan d án . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1 C u trúc t p Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Minh h a th trong t p SWF . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Ho t đ ng c a Adobe Flash Player phiên b n 9 . . . . . . . . . . . . . . . 7 2.4 Mô hình Flash player th c thi Papervision3D . . . . . . . . . . . . . . . . 8 2.5 Cơ ch ho t đ ng c a Gnash . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.6 Ki n trúc AVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.7 Minh h a đo n mã đư c th c thi b i AVM2 . . . . . . . . . . . . . . . . . 11 2.8 Ho t đ ng c a Nanojit trong tamarin . . . . . . . . . . . . . . . . . . . . 12 2.9 Minh h a thu t toán mark/sweep . . . . . . . . . . . . . . . . . . . . . . . 13 2.10 L i tham chi u vòng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.11 S d ng thu t toán ba màu . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.12 K thu t đ h a 3D trong đ h a máy tính . . . . . . . . . . . . . . . . . 16 2.13 Mô hình xây d ng thư vi n Papervision3D . . . . . . . . . . . . . . . . . 17 2.14 Thành ph n 3D trong đ h a máy tính . . . . . . . . . . . . . . . . . . . . 17 2.15 Quan h gi a các gói trong Papervision3D . . . . . . . . . . . . . . . . . 19 2.16 Scene3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.17 Camera trong Papervision3D . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.18 Viewport trong Papervision3D . . . . . . . . . . . . . . . . . . . . . . . . 21 2.19 Xây d ng Render . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.1 Mô hình k t h p tamarin và Gnash . . . . . . . . . . . . . . . . . . . . . . 26 v
  7. DANH SÁCH HÌNH V 4.1 Mô hình x lý 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2 Th c thi 3D c a Papervision3D trên Flash Player . . . . . . . . . . . . . . 29 vi
  8. B ng t vi t t t Ký hi u D ng đ y đ 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 vii
  9. CHƯƠNG 1 Đ tv nđ 1.1 Th c tr ng Ngày nay các thi t b đi n t tr nên ph bi n và mang l i nhi u l i ích trong cu c s ng. T nh ng h th ng công c ng, d ch v t đ ng như bán vé tàu xe cho đ n các thi t b trong gia đình như tivi, máy gi t, t l nh th m chí đ n t ng cá nhân như đi n tho i di đ ng, PDAs1 . V i s phát tri n c a công ngh , ng d ng đ h a trên trên các thi t b nhúng ngày càng đòi h i cao v t c đ x lý, kh năng tương tác nhanh và đáp ng đư c nhu c u c a ngư i dùng. Đ c bi t, s d ng đ h a 3D cho các ng d ng mang l i nhi u hi u qu v tính thân thi n, d s d ng, và đ p m t. Flash là m t công ngh có nhi u ưu đi m đ phát tri n trên các thi t b nhúng b i tính g n nh , đơn gi n, hơn n a Flash h tr đ h a 3D khá t t. Hình 1.1 minh h a ng d ng bi u đ s d ng phương pháp hi n th tr c quan 3D. Hình 1.1: Bi u đ hi n th tr c quan 3D 1 Personal Digital Assitants 1
  10. CHƯƠNG 1: Đ T V N Đ 1.2 Ph m vi nghiên c u Khóa lu n này đư c trình bày trong khuôn kh d án xây d ng h th ng x lý đ h a 3D và framework s d ng các thu t toán x lý, s p x p d li u. M c tiêu khóa lu n là ch ng minh đư c tính kh thi cũng như tính công ngh áp d ng trong d án. D án đư c đ xu t th c hi n trong th i gian 3 v i các giai đo n như sau: • Giai đo n m t: hư ng vào nghiên c u phát tri n 3D Flash cho thi t b di đ ng. S d ng Gnash làm máy Flash trên “Beagle Board”2 môi trư ng Linux h tr đ h a OpenGLES. • Giai đo n hai: xây d ng các thu t toán, m u x lý d li u 3D. • Giai đo n ba: làm m n các k t qu giai đo n hai. Input Output User Interface Flash Engine 3D Framework (Using Flare) Flash code Visualization data 3D data visualization Using Gnash Papervision3D 3D visualization algorithm Data analysis Screen resolution OpenGL/ES 2.0 Environment LINUX OS Beagle Board Hình 1.2: T ng quan d án Trong giai đo n đ u tiên, chúng tôi hư ng đ n phương pháp x lý đ h a 2D, 3D Flash d a vào OpenGLES trên h th ng nhúng. 2 http://beagleboard.org/ 2
  11. CHƯƠNG 1: Đ T V N Đ 1.3 Cách ti p c n Trư c h t, đ hi u đư c v công ngh Flash, chúng tôi3 t p trung vào thành ph n liên quan bao g m: ngôn ng AS, trình chơi Flash4 , 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 m i nên gây c n tr cho vi c tìm hi u. Ngu n tài li u tham kh o r t h n ch . Do v y, l a ch n c a chúng tôi là ti p c n nh ng ph n m m ngu n m , d a vào đó đ phát tri n cho d án. 1.4 C u trúc khoá lu n Các ph n còn l i c a khóa lu n có c u trúc như sau: • Chương 2 là cơ s lý thuy t công ngh Flash, mô hình và nguyên t c ho t đ ng c a các d án ngu n 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 thi t b di đ ng, đ ng th i đ xu t ý tư ng, gi i pháp và mô hình cho bài toán đó. • Chương 4 trình bày v th c nghi m đ ch ng minh tính kh thi, đúng đ n cho gi i pháp đã nêu trong chương 3. • Chương 5 t ng k t nh ng gì đã đ t đư c trong quá trình nghiên c u, đ ng th i đưa ra hư ng phát tri n trong giai đo n ti p theo. 3 Nhóm sinh viên nghiên c u t i phòng thí nghi m Toshiba-Coltech 4 Flash Player 3
  12. CHƯƠNG 2 Cơ s lý thuy t Đ gi i quy t bài toán trong khóa lu n này, chúng tôi tìm hi u m t s v n đ v lý thuy t: công ngh Flash, trình chơi Flash ngu n m - Gnash[1], máy o Tamarin, Papervision3D[2]-thư vi n Flash ngu n m và môi trư ng đ h a OpenGLES trên h th ng nhúng. Các ph n m m, d án ngu n m trong ph m vi d án có r t ít tài li u kèm theo. Do v y, vi c tìm hi u các v n đ lý thuy t liên quan t i các mã ngu n m cũng là công vi c chúng tôi t khám phá, và xây d ng l i các mô hình d a trên nh ng nghiên c u đó. 2.1 Công ngh Flash 2.1.1 Gi i thi u Flash[3] là n n đa phương ti n đư c phát tri n t ngôn ng C++, dùng đ đưa các ng d ng ho t h a, video và tương tác vào các trang Web. Flash là công ngh khép kín, thương m i hóa, đư c phân ph i và phát tri n b i Adobe1 . Flash thư ng đư c s d ng cho qu ng cáo và trò chơi đi n t . Flash dùng k thu t đ h a véc tơ đ t o ho t h a. Flash h tr hai lu ng âm thanh, hình nh đ ng th i x lý s ki n v i đ u vào là tương tác ngư i dùng thông qua thi t b ngo i vi. Các t p Flash th c thi đư c trên Flash Player nhi u n n t ng h đi u hành (Win- dows, Linux, Mac OS). Ngôn ng t o Flash là AS[4] 1 Công ty l n chuyên v ph n m m x lý đ h a 4
  13. CHƯƠNG 2: CƠ S LÝ THUY T 2.1.2 Ngôn ng ActionScript AS là ngôn ng theo k ch b n d a vào ECMAScript, đư c thi t k b i công ty Macromedia2 . Hi n t i, AS đư c s h u b i Adobe. T năm 1998 đ n nay, ngôn ng AS đã có ba phiên b n. Phiên b n m i nh t ActionScript 3.0 có nhi u c i ti n 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 ng AS t o ra đư c chương trình là các t p SWF v gi i trí, đ h a thông qua các công c phát tri n 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 d ng t p nh m đưa các d li u đ h a véc tơ, văn b n, phim hình và âm thanh lên Internet. Flash Player là ph n m m h tr chơi t p SWF, Gnash cũng là ph n m m ngu n m ch c năng tương t . Đ nh d ng t p SWF đư c thi t k ti n d ng cho vi c truy n d li u qua m ng Internet, không ph i cho chuy n đ i đ h a gi a các trình ch nh s a. Phiên b n hi n t i c a SWF là 10 tương ng v i Flash Player 10 c a hãng Adobe. T p Flash có th đư c t o ra t nh ng công c l p trình c a Adobe như: Flash, Flex Builder (s d ng b biên d ch asc). C u trúc c a t p Flash bao g m ph n Header, các th đi u khi n (control tag) và th đ nh nghĩa (Definition tag) như trên hình 2.1 • Th đ nh nghĩa xác đ nh đ c đi m c a đ i tư ng (đ c đi m này lưu tr trong t đi n). • Th đi u khi n ch a cách đi u khi n các lu ng, qu n lý m t t ng th , các khung hình và cách th c thi t p. • Trình chơi Flash x lý t t c các th c a t p SWF cho đ n khi g i th ShowFrame. T i th i đi m này, danh sách hi n th (Display List) đư c chuy n đ n màn hình và trình chơi ch x lý khung hình ti p theo. File Attribute Tag Tag Tag Header Tag tag .... Hình 2.1: C u trúc t p Flash Hình 2.2 minh h a các th trong t p SWF sau khi đư c phân tích dư i d ng XML và tách ra d ng ABC. Chúng ta có th nh n th y c u trúc này bao g m tu n t các th 2 Công ty s n xu t ph n m m x lý đ h a 3 ActionScript Compiler 5
  14. CHƯƠNG 2: CƠ S LÝ THUY T liên ti p và giá tr . Ví d như th tiêu đ (header) có các thu c tính chính cho t p Flash là s lư ng 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. hình 2.2 th y th DoABC, th này ch a thông tin v các h ng, th DoABC ch có AS 3. Hình 2.2: Minh h a th trong t p SWF 2.1.4 Flash Player Flash Player [6] là ph n m m chơi các t p SWF, đư c s d ng trong trình duy n Web ho c cài đ t tr c ti p trên h đi u hành. Flash Player dùng k thu t hi n th đ h a véc tơ đ gi m thi u t i đa dung lư ng t p, s d ng ít băng thông m ng và gi m th i gian t i t p. Nhi u trình duy t hi n nay h tr 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ó nhi u phiên b n tương thích v i các n n t ng, ki n trúc khác nhau trên máy tính hay thi t b di đ ng. Nguyên t c ho t đ ng chung T năm 2006, tương ng v i ngôn ng AS 3.0 là Flash Player phiên b n 9. Quá trình th c thi t p Flash b i Flash Player 9 dư i hình 2.3 như sau: 6
  15. CHƯƠNG 2: CƠ S LÝ THUY T • Đ u tiên t p SWF đư c phân tích ra làm 2 thành ph n ABC và Control Tags (các tag đi u khi n). • Ti p theo ph n ABC đư c chuy n cho máy o AVM th c thi (g m AVM1 và AVM2), vi c xác đ nh phiên b n c a ngôn ng AS tưng ng v i ABC s quy t đ nh giao quy n x lý cho máy o nào. • Sau đó, các th đi u khi n đư c đưa vào Display List 4 . • Cu i cùng, k t qu x lý c a máy o k t h p v i Display List chuy n sang bư c v đ u ra cho chương trình. Hình 2.3: Ho t đ ng c a Adobe Flash Player phiên b n 9 Ho t đ ng c a Flash Player v i Papervision3D Flash Player h tr th c thi Papervision3D vì nó có hai máy o ho t đ ng bên trong. Máy o th c thi 3D Flash là AVM2. Hình 2.4 minh h a cơ ch t h at đ ng c a Flash Player th c thi 3D Flash - Papervision3D. 2.2 Gnash 2.2.1 Gi i thi u Gnash là m t ng d ng ngu n m đư c phát tri n b i d án GPLFlash. Ph n m m này th c thi các t p tin Flash đ c l p ho c là plug-in5 đ th c thi Flash đư c 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 ph n trong x lý Flash 5 Ph n m m cài thêm vào trình duy n 7
  16. CHƯƠNG 2: CƠ S LÝ THUY T Papervision3D Code Papervsion3D Flex Builder (Flex SDK) AVM1 AS1,2 SWF Displaying Tamarin-AVM2 AS3 Hình 2.4: Mô hình Flash player th c thi Papervision3D Gnash đư c gi i thi u l n đ u tiên vào năm 2005 b i John Gilmore[1] và đ ng đ u nhóm phát tri n là Rob Savoye[1]. 2.2.2 Mô hình xây d ng Mô hình xây d ng đư c đ c p chi ti t trong khóa lu n c a b n Đinh Anh Thái, ngư i cùng tôi tham gia nghiên c u trong d án này. Nh nh ng k t qu tìm hi u v Gnash c a b n, tôi mô hình cách x lý Flash c a Gnash ph n ti p theo. 2.2.3 Cơ ch ho t đ ng Gnash xây d ng hai máy o đ th c thi ABC. Máy o AVM1 h tr x lý AS 1.0, 2.0, máy o AVM2 chưa h tr h t cho AS 3.0. Do đó, v i 2D Flash hi n th đư c đư c trên Gnash còn Papervision3D và đa s chương trình AS 3.0 là không. Gnash nh n đ u vào là t p SWF, sau khi đi qua b swfparser, tách đư c thành ph n c a ABC. Sau đó, các thành ph n ABC s đư c x lý b i máy o AVM6 . Cu i cùng, đ u ra c a máy o k t h p v i ph n hi n th c a Gnash là k t qu c a chương trình. Hình 2.5 mô t ho t đ ng c a Gnash 6 S đư c nêu rõ trong ph n ti p theo 8
  17. CHƯƠNG 2: CƠ S LÝ THUY T Gnash SWF swf parser abc parser Displaying render Virtual Machine Events AMV1 AVM2 AS1,2 AS3(not full) Hình 2.5: Cơ ch ho t đ ng c a Gnash 2.3 Tamarin - AVM2 2.3.1 Gi i thi u Tamarin là 1 d án ngu n m c a Mozilla7 . M c đích c a d án là xây d ng máy o AVM2[7] th c thi ngôn ng AS 3.0 v i hi u su t cao. Máy o Tamarin đư c s d ng bên trong ph n m m Adobe Flash Player đã đ c p trên, và còn có th đư c s d ng v i các d án khác ngoài Adobe. M c đích c a Mozilla là xây d ng tamarin đ đư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, m c đích d án Tamarin là h tr đa n n t ng ph n c ng, bao g m c ARM9 . Cho b vi x lý x64 và h đi n toán 64 bit v i 2 m c tiêu: c i ti n hi u năng th i đi m th c thi (run-time) và phát tri n b biên d ch th i đi m th c thi (run-time compiler). 2.3.2 Ki n trúc, nguyên lý ho t đ ng Máy o Tamarin - AVM2 nh n đ u vào là t p ABC10 thu đư c sau khi phân tích t p Flash. B .abc parser phân tích ti p t p ABC đ l y ra nh ng mã bytecode đ chy n cho quá trình xác th c ti p theo Bytecode Verifier. T i đây, nh ng mã Bytecode ch a l nh đơn gi n s đư c b thông d ch -Interpreter x lý và nh ng mã ch a l nh ph c t p s chuy n sang cho b biên d ch JIT - JIT Compiler. K t thúc quá trình này, máy o s chuy n sang th c thi đ i tư ng trên h th ng th t, chuy n toàn b các l nh trên máy o sang cho b x lý c a máy th t và đư c qu n lý b nh - Memory Manager /Garbage Collector. Các bư c th c hi n trên đư c minh h a hình 2.6 7 http://www.mozilla.org/ 8 Trình duy n Web ph bi n hi n nay 9 B x lý cho thi t b nhúng 10 có d ng *.abc 9
  18. CHƯƠNG 2: CƠ S LÝ THUY T SWF ABC .abc parser JIT Compiler Bytecode Verifier MIR Code Generator MD Code Generator Interpreter (x86, PPC, ARM, etc.) Runtime System (Type System, Object Model) Memory Manager / Garbage Collector Hình 2.6: Ki n trúc AVM Th c thi t p Flash qua nhi u giai đo n, chi ti t như sau. Đ u tiên, t mã ngu n AS đư c t o ra b i ngư i l p trình, ti p theo trình biên d ch asc c a FlexSDK s d ng và t o ra mã trung gian có trong t p ABC và MIR. Các mã trung gian v i m c đích t o ra tính di đ ng cho chương trình Flash mà không ph thu c vào n n t ng h đi u 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 n n t ng b x lý c a ph n c ng s d ng. Ví d 2.7 minh h a quá trình chuy n đ i, sinh mã trung gian và mã máy cho hai b x lý khác nhau. Đ hi u thêm v t p l nh và ki u d li u, có th xem ph l c A MIR là mã trung gian dùng trong AVM, mã này đ c l p v i mã máy th t. Ưu đi m c a MIR là đơn gi n, g n v i mã máy v t lý, là thành ph n trung gian gi a bytecode. MIR đư c thi t k đ t i ưu quá trình biên d ch gi a mã chương trình v i mã máy, do đó vi c l p trình trên n n t ng h đi u hành không b ràng bu c b i môi trư ng. T p ABC đư c x lý AVM2 qua b n bư c chính g m n p, liên k t, xác th c và th c thi như sau: • Quá trình n p, t p ABC đư c đ c vào b nh , gi i mã và phân tích; • Trong quá trình liên k t, m t s tên đư c tham chi u t vùng riêng c a c u trúc t p ABC đ x lý và sau đó tr l i k t qu là m t c u trúc d li u ph c t p hơn r t nhi u 10
  19. CHƯƠNG 2: CƠ S LÝ THUY T AS3.0 function (x:int) : int { return x+10 } MIR .abc @1 arg + 8 //argv getlocal 1 @2 load [@1+4] pushint 10 @3 imm 10 add @4 add (@2, @3) returnvalue @5 ret @4 // @4: eax x86 ARM mov eax, (eap+8) mov r0, #(eap+8) mov eax, (eax+4) mov r1, #r0 add eax, 10 add r2, r0, r1 ret ret Hình 2.7: Minh h a đo n mã đư c th c thi b i AVM2 liên k t các đ i tư ng cùng nhau; • Quá trình xác th c là tương tác gi a đ i tư ng, đ i tư ng ph i đư c g i tư ng minh; • Quá trình th c thi, mã bytecode trong t p ABC đư c biên d ch trong quá trình tính toán. Vi c xác th c v i các lu ng l nh x y ra liên t c: l nh này không đư c n m ngoài m ng bytecode; • Quá trình xác th c đư c th c hi n t t c các bư c trên. T i m i bư c, n u xu t hi n l i, AVM đưa ra thông đi p Verify Error đ có th b t l i chương trình; Trong ph n ti p theo s đi sâu vào cơ ch ho t đ ng c a các thành ph n chính mà chúng liên quan đ n hi u su t c a máy o Tamarin-AVM2. 2.3.3 B biên d ch JIT Gi i thi u M t h th ng c n chuy n mã b c cao ho c mã bytecode sang mã máy th i đi m th c thi, ch ngay trư c khi g i đo n mã đó. Biên d ch JIT[8] là k thu t chính đư c cài đ t h u h t các máy o c a Microsoft .NET 11 và Java12 . B biên d ch này đư c s d ng nhi u trong các d án c a Mozilla và có tên Naojit[9]. Nanojit là thư vi n C++ th c thi đa n n t ng, nhi m v c a nó là sinh ra mã máy. 11 Framework c a Microsoft 12 Công ngh c a Sun Micro System 11
  20. CHƯƠNG 2: CƠ S LÝ THUY T Đ u vào c a Nanojit là (Low-level Intermediate Representation) lu ng l nh mã trung gian b c th p nanojit. Cơ ch ho t đ ng Máy o tamarin s d ng Nanojit t o ra đ i tư ng nanojit::LirBuffer đ lưu l nh LIR. Ngoài ra đ i tư ng nanojit cũng đư c sinh ra đ ghi các l nh lưu nano::LirBuffer vào b đ m. Sau đó, b đ m có th gói các LibBufWriter vào 0 ho c nhi u đ i tư ng Lir- Writer. Chu i l nh s p x p trong đ i tư ng LirWriter có d ng đư ng ng. M i LirWriter có th t i ưu ho c th c thi nhi m v trong chương trình cho h th ng và cho LirBuffer. M i l n v i các l nh trong LirBuffer, AVM2 g i hàm nanojit::compile() đ t o ra mã máy. Mã máy này đư c lưu trong nanojit::Fragment. Cơ ch ho t đ ng c a nanojit đư c minh h a hình 2.8 Pointer nanojit:: naonojit:: nanojit:: Fragment LirWriter LirBuffer nanojit:: LirBufferWriter Machine code Instruction Instruction Instruction Machine code Instruction LirWriter Instruction nanojit::compile() Machine code Instruction Instruction Machine code .................... LirWriter .................... Instruction .................... Hình 2.8: Ho t đ ng c a Nanojit trong tamarin 2.3.4 B thông d ch B thông d ch c a h th ng đ ng th i gi i mã l nh và th c thi nó b ng các hàm đư c vi t b ng các ngôn ng l p trình b c cao. Trong ngôn ng AS, phương th c đư c khai báo tĩnh v i t i đa s lư ng ngăn x p và d li u c c b c n thi t. Do đó b thông d ch c p phát cho m i phương th c m t m ng con tr t i đ i tư ng c a ngăn x p. 2.3.5 Qu n lý b nh Qu n lý, d n d p b nh (Memory management/Garbage Collection). Cơ ch ho t đ ng c a MMgc[10]: MMgc s d ng thu t toán ph bi n là mark/sweep đư c minh h a hình 2.9. M i đ i tư ng trong h th ng đư c k t h p v i nhau b i bit đánh d u d n d p b nh th c 12
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2