Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Tetsuyuki Kobayashi
PDF, PPTX
6,114 views
Let's play with Goldfish
How to build android emulator And quick review of Eclair source release.
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 24
2
/ 24
3
/ 24
4
/ 24
5
/ 24
6
/ 24
7
/ 24
8
/ 24
9
/ 24
10
/ 24
11
/ 24
12
/ 24
13
/ 24
14
/ 24
15
/ 24
16
/ 24
17
/ 24
18
/ 24
19
/ 24
20
/ 24
21
/ 24
22
/ 24
23
/ 24
24
/ 24
More Related Content
PDF
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
PDF
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
PDF
Adaptive optimization of JIT compiler
by
nothingcosmos
PDF
Zynq VIPを利用したテストベンチ
by
Mr. Vengineer
PDF
ZynqMPのQEMU
by
Mr. Vengineer
PDF
Zynq MPSoC勉強会 Codec編
by
Tetsuya Morizumi
PDF
Mruby jitプレゼン
by
miura1729
PDF
Synverll
by
Hidemi Ishihara
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
Adaptive optimization of JIT compiler
by
nothingcosmos
Zynq VIPを利用したテストベンチ
by
Mr. Vengineer
ZynqMPのQEMU
by
Mr. Vengineer
Zynq MPSoC勉強会 Codec編
by
Tetsuya Morizumi
Mruby jitプレゼン
by
miura1729
Synverll
by
Hidemi Ishihara
What's hot
PPTX
Gstreamer Basics
by
Seiji Hiraki
PDF
Vivado hls勉強会1(基礎編)
by
marsee101
PDF
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
by
Mr. Vengineer
PPTX
Andoird版OpenCVのJavaサンプルを動かす
by
shobomaru
PDF
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
by
Hiroshi Yoshida
ODP
Bhyve Internals
by
Takuya ASADA
PDF
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
PDF
Vivado hls勉強会4(axi4 master)
by
marsee101
PDF
FPGAアクセラレータの作り方
by
Mr. Vengineer
PDF
Vivado hls勉強会3(axi4 lite slave)
by
marsee101
PDF
Androidプログラミング初心者のためのゲームアプリ開発入門
by
Masahiko Mizuta
PDF
Halide, Darkroom - 並列化のためのソフトウェア・研究
by
Yuichi Yoshida
PDF
Task Spooler を試した
by
y-uti
PDF
高位合成ツールVivado hlsのopen cv対応
by
marsee101
ODP
LLVM overview 20110122
by
nothingcosmos
PDF
Starting qt5beta at_raspberry_pi Qtnagoya#6
by
Kazuo Asano (@kazuo_asa)
PDF
Synthesijer zynq qs_20150316
by
Takefumi MIYOSHI
PDF
Synthesijer jjug 201504_01
by
Takefumi MIYOSHI
PDF
20apr2012 kernelvm7-main
by
Shotaro Uchida
PDF
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい
by
Yukio Saito
Gstreamer Basics
by
Seiji Hiraki
Vivado hls勉強会1(基礎編)
by
marsee101
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
by
Mr. Vengineer
Andoird版OpenCVのJavaサンプルを動かす
by
shobomaru
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
by
Hiroshi Yoshida
Bhyve Internals
by
Takuya ASADA
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
Vivado hls勉強会4(axi4 master)
by
marsee101
FPGAアクセラレータの作り方
by
Mr. Vengineer
Vivado hls勉強会3(axi4 lite slave)
by
marsee101
Androidプログラミング初心者のためのゲームアプリ開発入門
by
Masahiko Mizuta
Halide, Darkroom - 並列化のためのソフトウェア・研究
by
Yuichi Yoshida
Task Spooler を試した
by
y-uti
高位合成ツールVivado hlsのopen cv対応
by
marsee101
LLVM overview 20110122
by
nothingcosmos
Starting qt5beta at_raspberry_pi Qtnagoya#6
by
Kazuo Asano (@kazuo_asa)
Synthesijer zynq qs_20150316
by
Takefumi MIYOSHI
Synthesijer jjug 201504_01
by
Takefumi MIYOSHI
20apr2012 kernelvm7-main
by
Shotaro Uchida
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい
by
Yukio Saito
Viewers also liked
ODP
Webcast 12 09
by
Andreas Schulte
PDF
Sunseeker predator 82
by
IbizaYachtClub
PPTX
Kintone 導入サービス キャンペーン_20140903-1
by
denet_tech_tokyo
PDF
Bondia Lleida 15102012
by
Bondia Lleida Sl
PDF
Manage your Projects in One Single Page with Basecamp
by
andrea_chiu
PDF
Presentation1
by
IndiaMART InterMESH Limited
PDF
WORK EXPERIENCE LETTER
by
HARSH SHAH
PPTX
My place (expresion oral)
by
Isabel Abarca Aravena
Webcast 12 09
by
Andreas Schulte
Sunseeker predator 82
by
IbizaYachtClub
Kintone 導入サービス キャンペーン_20140903-1
by
denet_tech_tokyo
Bondia Lleida 15102012
by
Bondia Lleida Sl
Manage your Projects in One Single Page with Basecamp
by
andrea_chiu
Presentation1
by
IndiaMART InterMESH Limited
WORK EXPERIENCE LETTER
by
HARSH SHAH
My place (expresion oral)
by
Isabel Abarca Aravena
Similar to Let's play with Goldfish
PPTX
CMake multiplatform build-tool
by
Naruto TAKAHASHI
PDF
Android カスタムROMの作り方
by
Masahiro Hidaka
PPTX
組込みAndroid入門実習
by
ksk sue
PPTX
Javaで簡単にgpgpu aparapi
by
Ken'ichi Sakiyama
KEY
SEAndroid -AndroidのアーキテクチャとSE化について-
by
Hiromu Yakura
PDF
NPAPIを使ったandroid標準ブラウザの拡張方法
by
Naruto TAKAHASHI
PDF
JellyBeanのソースをとりあえず眺めてみた(手抜き)
by
l_b__
PDF
0621 ndk game
by
cat kaotaro
PDF
Android App Development with Gradle & Android Studio
by
Soichiro Kashima
PDF
Dalvikバイトコードリファレンスの読み方 改訂版
by
Takuya Matsunaga
PDF
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
by
Shin-ya Koga
ODP
How to use GPL software in closed source Android application
by
andropenguin
PPT
Android™組込み開発基礎コース BeagleBoard編
by
OESF Education
PDF
DartVM on Android
by
nothingcosmos
PDF
DroidKaigi2016 windows環境での効率的なアプリ開発手法
by
tkawashita
PPTX
もしも… Javaでヘテロジニアスコアが使えたら…
by
Yasumasa Suenaga
PDF
Android studio で行ってみよう!!
by
Kazuaki Ueda
PDF
Pf部2011年10月勉強会.1@androidsola
by
android sola
PDF
MeeGo Seminar Winter Porting 20101209
by
Mitz Amano
PPT
Android Hacks - Hack40
by
Masanori Ohkawara
CMake multiplatform build-tool
by
Naruto TAKAHASHI
Android カスタムROMの作り方
by
Masahiro Hidaka
組込みAndroid入門実習
by
ksk sue
Javaで簡単にgpgpu aparapi
by
Ken'ichi Sakiyama
SEAndroid -AndroidのアーキテクチャとSE化について-
by
Hiromu Yakura
NPAPIを使ったandroid標準ブラウザの拡張方法
by
Naruto TAKAHASHI
JellyBeanのソースをとりあえず眺めてみた(手抜き)
by
l_b__
0621 ndk game
by
cat kaotaro
Android App Development with Gradle & Android Studio
by
Soichiro Kashima
Dalvikバイトコードリファレンスの読み方 改訂版
by
Takuya Matsunaga
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
by
Shin-ya Koga
How to use GPL software in closed source Android application
by
andropenguin
Android™組込み開発基礎コース BeagleBoard編
by
OESF Education
DartVM on Android
by
nothingcosmos
DroidKaigi2016 windows環境での効率的なアプリ開発手法
by
tkawashita
もしも… Javaでヘテロジニアスコアが使えたら…
by
Yasumasa Suenaga
Android studio で行ってみよう!!
by
Kazuaki Ueda
Pf部2011年10月勉強会.1@androidsola
by
android sola
MeeGo Seminar Winter Porting 20101209
by
Mitz Amano
Android Hacks - Hack40
by
Masanori Ohkawara
More from Tetsuyuki Kobayashi
PDF
組み込みLinuxでのGolangのススメ(Go con版)
by
Tetsuyuki Kobayashi
PDF
組み込みLinuxでのGolangのススメ
by
Tetsuyuki Kobayashi
PDF
Tricky implementation of Go ARM soft float
by
Tetsuyuki Kobayashi
PDF
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
by
Tetsuyuki Kobayashi
PDF
Tweaking Google TV emulator
by
Tetsuyuki Kobayashi
PDF
Tips of Malloc & Free
by
Tetsuyuki Kobayashi
ODP
Inter-process communication of Android
by
Tetsuyuki Kobayashi
PDF
Linuxのユーザーランドをinitから全てまるごとgolangで書く
by
Tetsuyuki Kobayashi
PDF
Try new transport protocol SRT (ver. 2)
by
Tetsuyuki Kobayashi
PDF
ARM 64bit has come!
by
Tetsuyuki Kobayashi
PDF
Android is NOT just 'Java on Linux'
by
Tetsuyuki Kobayashi
PDF
Basic of virtual memory of Linux
by
Tetsuyuki Kobayashi
PDF
ADB(Android Debug Bridge): How it works?
by
Tetsuyuki Kobayashi
PDF
WebOS Open Source Edition を試してみた
by
Tetsuyuki Kobayashi
PDF
Try new transport protocol SRT
by
Tetsuyuki Kobayashi
PDF
New VIdeo CODEC AV1
by
Tetsuyuki Kobayashi
PDF
Patch101
by
Tetsuyuki Kobayashi
PDF
Simple and efficient way to get the last log using MMAP
by
Tetsuyuki Kobayashi
PDF
some topic of ffmpeg
by
Tetsuyuki Kobayashi
PDF
Virtual memory 20070222-en
by
Tetsuyuki Kobayashi
組み込みLinuxでのGolangのススメ(Go con版)
by
Tetsuyuki Kobayashi
組み込みLinuxでのGolangのススメ
by
Tetsuyuki Kobayashi
Tricky implementation of Go ARM soft float
by
Tetsuyuki Kobayashi
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
by
Tetsuyuki Kobayashi
Tweaking Google TV emulator
by
Tetsuyuki Kobayashi
Tips of Malloc & Free
by
Tetsuyuki Kobayashi
Inter-process communication of Android
by
Tetsuyuki Kobayashi
Linuxのユーザーランドをinitから全てまるごとgolangで書く
by
Tetsuyuki Kobayashi
Try new transport protocol SRT (ver. 2)
by
Tetsuyuki Kobayashi
ARM 64bit has come!
by
Tetsuyuki Kobayashi
Android is NOT just 'Java on Linux'
by
Tetsuyuki Kobayashi
Basic of virtual memory of Linux
by
Tetsuyuki Kobayashi
ADB(Android Debug Bridge): How it works?
by
Tetsuyuki Kobayashi
WebOS Open Source Edition を試してみた
by
Tetsuyuki Kobayashi
Try new transport protocol SRT
by
Tetsuyuki Kobayashi
New VIdeo CODEC AV1
by
Tetsuyuki Kobayashi
Patch101
by
Tetsuyuki Kobayashi
Simple and efficient way to get the last log using MMAP
by
Tetsuyuki Kobayashi
some topic of ffmpeg
by
Tetsuyuki Kobayashi
Virtual memory 20070222-en
by
Tetsuyuki Kobayashi
Let's play with Goldfish
1.
Goldfishをいじってみよう
2009.11.30 京都マイクロコンピュータ 小林 哲之 1
2.
はじめに ●
Androidのソースが公開されてから一年 ● 先日Eclair(Android2.0)のソースがマスターに マージされたので急遽内容を変更しました。 ● ここでの話は発表者の主観に基づくもの。無保 証です。 2
3.
Who am I? ●
組み込み一筋N十年。 – リアルタイムOS iTRON – 組み込み向けJava実行環境 – 組み込み向けLinux – gcc ● ブログ 「組み込みの人。」 – http://d.hatena.ne.jp/embedded/ ● 京都マイクロコンピュータ 2008年3月入社 – http://www.kmckk.co.jp/
4.
本日お話すること ●
Goldfishとは ● Eclair(エクレア)のソースがマージされた ● VFP対応、armv7対応 ● Webkit V8 JavaScriptエンジン ● DalvikVMに実験版のJIT 4
5.
Goldfishとは ●
エミュレータ(コマンド名 emulator) で使われ ている仮想ハードウェア ● CPUは元々arm926だが「換装」可能。
6.
ソースからビルドして動かす方法 ●
envsetup.shを使うと環境設定が簡単。 $ cd mydroid $ source build/envsetup.sh $ lunch genericeng $ time make j4 2>&1 |tee make.log $ emulator &
7.
Eclair(エクレア) ●
2009.11.15 ● デフォルトは変更されていないが、以下のもの がソースに入ってきている ● VFP対応、armv7対応 ● Webkit V8 JavaScriptエンジン ● DalvikVMに実験版のJIT
8.
ARMのアーキテクチャ対応の拡大 ●
DalvikVMのアセンブラ版のインタープリタの 種類が増えた ● armv4t ● armv5te (default) ● armv5te-vfp ● armv7-a ● ビルド時の環境変数TARGET_ARCH_VARIANT
9.
VFP対応版のビルド
$ export TARGET_ARCH_VARIANT=armv5tevfp $ time make j4 2>&1 |tee make.log $ emulator & ● インタープリタはVFP対応版が使われる。 ● それ以外の部分ではVFPは使われない。(-msoft-flaot付きでビルドされるため) ● Kernel, qemuはそのままでOK
10.
armv7a対応版のビルド
$ export TARGET_ARCH_VARIANT=armv7a $ time make j4 2>&1 |tee make.log $ emulator kernel prebuilt/androidarm/ kernel/kernelqemuarmv7 & ● Kernelはarmv7用にビルドされたものを使用する。 ● gcc4.4.0ではコンパイルエラーになる場所があった。armv7対応はまだ枯 れていないかも。もっと新しいコンパイラで後で再チャレンジ。
11.
Webkit V8 Javascriptエンジン ●
http://code.google.com/intl/ja/apis/v8/ ● C++で記述されている ● X86, x86-64, ARMに対応 ● ARMの場合32bitコードを生成する。(Thumbで はない)
12.
V8を有効にしてビルド $ export JS_ENGINE=v8 $ time make j4 2>&1 |tee make.log $ emulator &
13.
V8が生成したコードを見てみる ●
無理やりデバッグ用のコードを有効にする ● webkit/v8Binding/Android.libv8.mk – LOCAL_CFLAGS += -DENABLE_DISASSEMBLER ● webkit/v8Binding/src/flag_definitions.h – print_code を true にセット – print_builtin_code を trueにセット
14.
V8が生成したコード I/v8 ( 201): Builtin: Illegal I/v8 ( 201): kind = BUILTIN I/v8 ( 201): name = Illegal I/v8 ( 201): Instructions (size = 40) I/v8 ( 201): 0x45a50920 0 e59fc014 ldr ip, [pc, #+20] I/v8 ( 201): 0x45a50924 4 e58c1000 str r1, [ip, #+0] I/v8 ( 201): 0x45a50928 8 e2800001 add r0, r0, #1 I/v8 ( 201): 0x45a5092c 12 e59f100c ldr r1, [pc, #+12] I/v8 ( 201): 0x45a50930 16 e59fc00c ldr ip, [pc, #+12] ;; code: STUB, CEntry, minor: 0 I/v8 ( 201): 0x45a50934 20 e12fff1c bx ip I/v8 ( 201): 0x45a50938 24 03000003 constant pool begin I/v8 ( 201): 0x45a5093c 28 aa438d10 constant I/v8 ( 201): 0x45a50940 32 aa2d94e1 constant I/v8 ( 201): 0x45a50944 36 45a50120 constant I/v8 ( 201):
32bitのARMのコードが生成されている。 詳しいことはわかりません。。 $ adb logcat
15.
Dalvik VmのJIT ●
マスターのソースに入ったのは実験途中のスナップ ショットらしい。いろんなやり方を評価中。 ● Cで記述されている。 ● ARMのみ。 ● Armv5te (Thumbのコードを生成) ● Armv5te-vfp (Thumb + VFP呼び出し) ● armv7-a (Thumb2のコードを生成) ● V8と共通のコードは無い。
16.
JITを有効にしてビルド $ export WITH_JIT=true $ time make j4 2>&1 |tee make.log $ emulator &
17.
JITが生成したコードを見てみる ●
無理やりデバッグ用のコードを有効にしてみる ● vm/Init.c setCommandLineDefaults() ● gDvmJit.printMe = true; ●
18.
JITが生成したコード D/dalvikvm( 97): dalvik offset: 0x0062 @ agetbyte D/dalvikvm( 97): 0x44a83544 (0018): ldr r2, [r5, #124] D/dalvikvm( 97): 0x44a83546 (001a): str r3, [r5, #80] D/dalvikvm( 97): 0x44a83548 (001c): mov r3, #128 D/dalvikvm( 97): 0x44a8354a (001e): ldr r3, [r5, r3] D/dalvikvm( 97): 0x44a8354c (0020): cmp r2, #0 D/dalvikvm( 97): 0x44a8354e (0022): beq 0x44a835b6 D/dalvikvm( 97): 0x44a83550 (0024): ldr r0, [r2, #8] D/dalvikvm( 97): 0x44a83552 (0026): add r2, r2, #16 D/dalvikvm( 97): 0x44a83554 (0028): cmp r3, r0 D/dalvikvm( 97): 0x44a83556 (002a): bcs 0x44a835b6 D/dalvikvm( 97): 0x44a83558 (002c): ldrsb r0, [r2, r3] $ adb
logcat
19.
JITが生成したコード
バイト配列のロードのDEXコード D/dalvikvm( 97): dalvik offset: 0x0062 @ agetbyte D/dalvikvm( 97): 0x44a83544 (0018): ldr r2, [r5, #124] D/dalvikvm( 97): 0x44a83546 (001a): str r3, [r5, #80] D/dalvikvm( 97): 0x44a83548 (001c): mov r3, #128 D/dalvikvm( 97): 0x44a8354a (001e): ldr r3, [r5, r3] D/dalvikvm( 97): 0x44a8354c (0020): cmp r2, #0 nullチェック D/dalvikvm( 97): 0x44a8354e (0022): beq 0x44a835b6 D/dalvikvm( 97): 0x44a83550 (0024): ldr r0, [r2, #8] D/dalvikvm( 97): 0x44a83552 (0026): add r2, r2, #16 D/dalvikvm( 97): 0x44a83554 (0028): cmp r3, r0 配列の範囲チェック D/dalvikvm( 97): 0x44a83556 (002a): bcs 0x44a835b6 D/dalvikvm( 97): 0x44a83558 (002c): ldrsb r0, [r2, r3] バイトデータのロード ほぼDEXコードに対応したコード。最適化はされていない
20.
このJITの特徴 ●
インタープリタで実行頻度の高い部分をカウン トし、一定回数以上実行されるとコンパイル要 求がキューに入る。 ● JITコンパイルは別スレッドで行われる ● コンパイルの単位はメソッド単位ではなく、 もっと小さいブロック単位
21.
体感速度はあまり変わらないが... ●
マイクロベンチマークでは3倍程度の性能向上 があるようだ ● 体感速度はVMの実行速度よりも描画速度の比 重が大きい ●
22.
JITコンパイラのトレードオフ ●
コンパイラ自身のサ ● よりよいバランスを イズ 目指して調整が必要 ● コンパイル時間 ● まだまだ実験中なの ● コンパイルしたコー で期待して待とう ドのサイズ ● 最適化の度合い ● ...
23.
今後が楽しみ ●
Thumb2EE ● JITコンパイルに適したarmv7の命令セット。 – ゼロコストnullポインタチェック – 配列の範囲チェック用命令 – ハンドラ呼び出し命令 ● 生成コードのサイズが小さくなり効率化 ● マルチプロセッサ(SMP) ● バックグランドでJITコンパイル
24.
最後に ●
オープンソースの幸せ ● ぜひ自分でソースをいじってビルドして動かし てみてください ● ブログにコメント、トラックバック歓迎 ● ● ● ご清聴ありがとうございました。
Download