SlideShare a Scribd company logo
Enviar pesquisa
Carregar
Entrar
Cadastre-se
Let's play with Goldfish
Denunciar
Tetsuyuki Kobayashi
Seguir
Engineer
8 de Dec de 2009
•
0 gostou
•
5,884 visualizações
1
de
24
Let's play with Goldfish
8 de Dec de 2009
•
0 gostou
•
5,884 visualizações
Baixar agora
Baixar para ler offline
Denunciar
Tecnologia
How to build android emulator And quick review of Eclair source release.
Tetsuyuki Kobayashi
Seguir
Engineer
Recomendados
Zynq MPSoC勉強会 Codec編
Tetsuya Morizumi
2K visualizações
•
16 slides
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
9.3K visualizações
•
76 slides
ZynqMPのQEMU
Mr. Vengineer
4.5K visualizações
•
32 slides
Adaptive optimization of JIT compiler
nothingcosmos
4.3K visualizações
•
39 slides
Zynq VIPを利用したテストベンチ
Mr. Vengineer
3.6K visualizações
•
47 slides
Mruby jitプレゼン
miura1729
2K visualizações
•
8 slides
Mais conteúdo relacionado
Mais procurados
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
UnityTechnologiesJapan002
1.4K visualizações
•
127 slides
LLVM overview 20110122
nothingcosmos
2.8K visualizações
•
32 slides
Task Spooler を試した
y-uti
3.1K visualizações
•
34 slides
20apr2012 kernelvm7-main
Shotaro Uchida
2.4K visualizações
•
48 slides
Bhyve Internals
Takuya ASADA
3.6K visualizações
•
30 slides
Vivado hls勉強会1(基礎編)
marsee101
26.9K visualizações
•
184 slides
Mais procurados
(20)
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
UnityTechnologiesJapan002
•
1.4K visualizações
LLVM overview 20110122
nothingcosmos
•
2.8K visualizações
Task Spooler を試した
y-uti
•
3.1K visualizações
20apr2012 kernelvm7-main
Shotaro Uchida
•
2.4K visualizações
Bhyve Internals
Takuya ASADA
•
3.6K visualizações
Vivado hls勉強会1(基礎編)
marsee101
•
26.9K visualizações
Synthesijer zynq qs_20150316
Takefumi MIYOSHI
•
8.7K visualizações
高位合成ツールVivado hlsのopen cv対応
marsee101
•
3.4K visualizações
Andoird版OpenCVのJavaサンプルを動かす
shobomaru
•
6.9K visualizações
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい
Yukio Saito
•
4.4K visualizações
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Mr. Vengineer
•
2K visualizações
Synthesijer jjug 201504_01
Takefumi MIYOSHI
•
7.8K visualizações
Androidプログラミング初心者のためのゲームアプリ開発入門
Masahiko Mizuta
•
43.2K visualizações
FPGAアクセラレータの作り方
Mr. Vengineer
•
5.9K visualizações
Vivado hls勉強会4(axi4 master)
marsee101
•
5.7K visualizações
Halide, Darkroom - 並列化のためのソフトウェア・研究
Yuichi Yoshida
•
10.1K visualizações
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Hiroshi Yoshida
•
15K visualizações
Starting qt5beta at_raspberry_pi Qtnagoya#6
Kazuo Asano (@kazuo_asa)
•
2.1K visualizações
Vivado hls勉強会3(axi4 lite slave)
marsee101
•
6.9K visualizações
Gstreamer Basics
Seiji Hiraki
•
1K visualizações
Destaque
Presentation1
IndiaMART InterMESH Limited
5.1K visualizações
•
19 slides
Bondia Lleida 15102012
Bondia Lleida Sl
2.7K visualizações
•
16 slides
Manage your Projects in One Single Page with Basecamp
andrea_chiu
2.6K visualizações
•
124 slides
Sunseeker predator 82
IbizaYachtClub
5.5K visualizações
•
4 slides
Webcast 12 09
Andreas Schulte
5.8K visualizações
•
34 slides
Kintone 導入サービス キャンペーン_20140903-1
denet_tech_tokyo
5.4K visualizações
•
13 slides
Destaque
(8)
Presentation1
IndiaMART InterMESH Limited
•
5.1K visualizações
Bondia Lleida 15102012
Bondia Lleida Sl
•
2.7K visualizações
Manage your Projects in One Single Page with Basecamp
andrea_chiu
•
2.6K visualizações
Sunseeker predator 82
IbizaYachtClub
•
5.5K visualizações
Webcast 12 09
Andreas Schulte
•
5.8K visualizações
Kintone 導入サービス キャンペーン_20140903-1
denet_tech_tokyo
•
5.4K visualizações
WORK EXPERIENCE LETTER
HARSH SHAH
•
5.2K visualizações
My place (expresion oral)
Isabel Abarca Aravena
•
5K visualizações
Similar a Let's play with Goldfish
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
4.8K visualizações
•
52 slides
CMake multiplatform build-tool
Naruto TAKAHASHI
2K visualizações
•
81 slides
Android デバッグ小ネタ
l_b__
19.8K visualizações
•
17 slides
Froyo DalvikVM JIT
Tetsuyuki Kobayashi
1.4K visualizações
•
20 slides
Rocroにおけるgcp活用事例
Kishin Yagami
1.6K visualizações
•
45 slides
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
974 visualizações
•
36 slides
Similar a Let's play with Goldfish
(20)
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
•
4.8K visualizações
CMake multiplatform build-tool
Naruto TAKAHASHI
•
2K visualizações
Android デバッグ小ネタ
l_b__
•
19.8K visualizações
Froyo DalvikVM JIT
Tetsuyuki Kobayashi
•
1.4K visualizações
Rocroにおけるgcp活用事例
Kishin Yagami
•
1.6K visualizações
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
•
974 visualizações
普段の開発を少しだけ便利にする3つのレシピ
Takuma Maruyama
•
762 visualizações
130710 02
openrtm
•
1.4K visualizações
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
•
27.6K visualizações
あるRISC-V CPUの 浮動小数点数(異常なし)
たけおか しょうぞう
•
374 visualizações
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
•
525 visualizações
JIT のコードを読んでみた
y-uti
•
10.1K visualizações
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
Izumi Tsutsui
•
7.2K visualizações
x86-64/Linuxに独自メモリ空間を勝手増設
Minoru Nakamura
•
2.5K visualizações
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
•
5K visualizações
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
Takakiyo Tanaka
•
2.3K visualizações
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
•
1.5K visualizações
2014 dart flight school in Tokyo
nothingcosmos
•
1.9K visualizações
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
•
2K visualizações
EmitJSの環境をちょこっと調べた
kyon mm
•
938 visualizações
Mais de Tetsuyuki Kobayashi
some topic of ffmpeg
Tetsuyuki Kobayashi
2.2K visualizações
•
15 slides
New VIdeo CODEC AV1
Tetsuyuki Kobayashi
2.8K visualizações
•
14 slides
Try new transport protocol SRT (ver. 2)
Tetsuyuki Kobayashi
4K visualizações
•
28 slides
Try new transport protocol SRT
Tetsuyuki Kobayashi
2K visualizações
•
16 slides
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Tetsuyuki Kobayashi
6.7K visualizações
•
27 slides
WebOS Open Source Edition を試してみた
Tetsuyuki Kobayashi
1.7K visualizações
•
21 slides
Mais de Tetsuyuki Kobayashi
(20)
some topic of ffmpeg
Tetsuyuki Kobayashi
•
2.2K visualizações
New VIdeo CODEC AV1
Tetsuyuki Kobayashi
•
2.8K visualizações
Try new transport protocol SRT (ver. 2)
Tetsuyuki Kobayashi
•
4K visualizações
Try new transport protocol SRT
Tetsuyuki Kobayashi
•
2K visualizações
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Tetsuyuki Kobayashi
•
6.7K visualizações
WebOS Open Source Edition を試してみた
Tetsuyuki Kobayashi
•
1.7K visualizações
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
•
9.5K visualizações
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
•
5.3K visualizações
組み込みLinuxでのGolangのススメ
Tetsuyuki Kobayashi
•
2.6K visualizações
Tricky implementation of Go ARM soft float
Tetsuyuki Kobayashi
•
6.4K visualizações
ARM 64bit has come!
Tetsuyuki Kobayashi
•
34.5K visualizações
Virtual memory 20070222-en
Tetsuyuki Kobayashi
•
2.1K visualizações
Simple and efficient way to get the last log using MMAP
Tetsuyuki Kobayashi
•
8.5K visualizações
Tips of Malloc & Free
Tetsuyuki Kobayashi
•
11.5K visualizações
Basic of virtual memory of Linux
Tetsuyuki Kobayashi
•
11.7K visualizações
Patch101
Tetsuyuki Kobayashi
•
1.9K visualizações
ADB(Android Debug Bridge): How it works?
Tetsuyuki Kobayashi
•
31.3K visualizações
Tweaking Google TV emulator
Tetsuyuki Kobayashi
•
1.7K visualizações
Inter-process communication of Android
Tetsuyuki Kobayashi
•
15.3K visualizações
Android is NOT just 'Java on Linux'
Tetsuyuki Kobayashi
•
24.2K visualizações
Último
GraphQLはどんな時に使うか
Yutaka Tachibana
17 visualizações
•
37 slides
遠征ドルヲタのための便利サイトを作ってみた
Kenta Fujimoto
11 visualizações
•
24 slides
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
170 visualizações
•
16 slides
CatBoost on GPU のひみつ
Takuji Tahara
780 visualizações
•
30 slides
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
149 visualizações
•
12 slides
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
7 visualizações
•
1 slide
Último
(13)
GraphQLはどんな時に使うか
Yutaka Tachibana
•
17 visualizações
遠征ドルヲタのための便利サイトを作ってみた
Kenta Fujimoto
•
11 visualizações
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
170 visualizações
CatBoost on GPU のひみつ
Takuji Tahara
•
780 visualizações
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
149 visualizações
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
•
7 visualizações
画像生成AIの問題点
iPride Co., Ltd.
•
13 visualizações
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
•
6 visualizações
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 visualizações
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
•
28 visualizações
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
•
45 visualizações
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
69 visualizações
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
125 visualizações
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.
最後に ●
オープンソースの幸せ ● ぜひ自分でソースをいじってビルドして動かし てみてください ● ブログにコメント、トラックバック歓迎 ● ● ● ご清聴ありがとうございました。