SlideShare a Scribd company logo
1 of 20
Download to read offline
Dalvik仮想マシンの
アーキテクチャ

  僻地からの出稼ぎプログラマ
       kmt-t
自己紹介
 Web上での活動

・ハンドルネーム      : kmt-t
・はてなダイアリ ID   : kmt-t2
・Twitter ID   : kmt_t


    属性
     属性
・鳥取県から大阪に出稼ぎ中です
・組み込みプログラマらしい
・ミドルウェアが得意です
→画像処理(2D/3D)、ファイルシステム、仮想マシンが専門です
・使用言語はC++(not C)/C#/Python
→C++11とかC#の最新の仕様がキャッチアップできていません…
発表の構成
Dalvik仮想マシン3部作
Dalvik仮想マシンの発表を以下の3回にわけて行います
1. Dalvik仮想マシンのアーキテクチャ ←今回はここの発表
2. Dalvikバイトコードのリファレンスの読み方
3. DEXファイルフォーマット

  発表の目的


1. Dalvik仮想マシンのソースコードが誰でも読めるようにする
2. Dalvik仮想マシンに対するみんなのリテラシを上げる
3. より深い部分の発表をするための下地をつくる
本日の発表の概要
 Java仮想マシンとの比較
Java仮想マシンはスタックマシン、 Dalvik仮想マシンはレジスタマシン
・スタックマシンとは何か?
・レジスタマシンとは何か?
・両者の比較とトレードオフをはっきりさせる

 インタープリタの設計
Dalvik仮想マシンで採用されているスレッドインタープリタとは何か?

   参考文献
Java仮想マシン仕様 (ISBN:489471356X)
Java仮想マシン
スタックマシン
スタックマシンの基本動作
スタックマシンの基本動作
スタックマシンは演算を行うための「オペランドスタック」を持つ
1. 演算に使う値をオペランドスタックに積む
2. スタックから値をポップしてその値で演算をする
3. 演算結果をスタックに積む


        Push         Pop         演算
メモリ

          値3         値3
          値2         値2
          値1         値1
      オペランドスタック   オペランドスタック
Dalvik仮想マシン
レジスタマシン
レジスタマシンの基本動作
レジスタマシンは演算を行うための「レジスタ」と呼ばれる領域を持つ
1. 演算に使う値をメモリからレジスタにコピーする
2. レジスタ上の値を演算し、レジスタに結果を保存する
3. 演算結果をメモリへコピーする


        レジスタ6       メモリ
        レジスタ5
        レジスタ4
        レジスタ3
        レジスタ2       演算
        レジスタ1
        レジスタ
Dalvik仮想マシン
レジスタマシンの補足
 Dalvik仮想マシンは特殊なレジスタマシン
・レジスタはメソッド呼び出し時にスタック領域に確保される
→確保されるレジスタは0~65535個までの可変数
・メソッド終了時にスタック領域に確保されたレジスタは開放される
・レジスタにはレジスタを識別する番号、「レジスタ番号」が割り振られる
・Dalvik仮想マシンのレジスタとは一般的にいわれるレジスタとは違い、
 演算に使うメモリ領域をレジスタと呼んでいる

                メソッドB R0               メソッドAから
     成          メソッドB R1               メソッドB呼出
     長   (VM-specific internal goop)
     方          メソッドA R0
     向
                メソッドA R1
                   スタック
CPUの機械語や
仮想マシンバイトコードの基礎用語
  最小の構成要素
機械語やバイトコードの命令には最低以下の情報が必要
・命令の種類を示す「オペコード」
・命令の演算対象となる値を示す「オペランド」
→オペランドにはレジスタ番号や即値が指定される

    命令長
機械語やバイトコードの命令のバイナリサイズを「命令長」と呼ぶ
→スタックマシンとレジスタマシンとの比較の大きなポイント
ちなみに、命令長はCPU、仮想マシンごとに可変長のものと固定長の
ものと、どちらも存在する
・固定長 – MIPS/ARMなど
・可変長 – x86/Java仮想マシン/Dalvik仮想マシンなど
仮想マシンバイトコード
命令のイメージ (架空の例)
   たとえば
レジスタAとレジスタBを加算してレジスタCに格納する命令の例




   オペコード      オペランド   オペランド   オペランド
     ADD     レジスタ番号C レジスタ番号A レジスタ番号B
    (8bit)     (8bit)  (8bit)  (8bit)


                命令長=32bit
Java仮想マシン
スタックマシンの特徴
    特徴
・可変長命令フォーマット
・オペランドは8bit
・演算対象はオペランドスタックのトップと決まっている命令が多い
→この場合オペランドが省略可能
・オペランドスタックを操作するための命令が必要なケースがある
→そのため命令数がレジスタマシンにくらべて多くなるケースがある


   まとめると

・バイトコードのサイズは小さい (オペランドが省略できるため)
・同じ処理をした場合の命令数はレジスタマシンにくらべて多い
Dalvik仮想マシン
レジスタマシンの特徴
     特徴
・可変長命令フォーマット
・オペランドは8bit
・レジスタがオペランドとなる場合、オペランドサイズは最大16bitになる
→レジスタが最大65535個あるため
・命令は16bitでアライメントされている
・オペランドスタックを操作するための命令が不要である


  まとめると

・バイトコードのサイズは大きい (オペランドが大きいため)
・同じ処理をした場合の命令数はスタックマシンにくらべて少ない
Dalvikバイトコードの命令長が
長い問題に対する対策
  長い命令長
レジスタをオペランドとした場合、オペランドが巨大化



   その対策
すべての命令の種類ですべてのレジスタを参照することをあきらめる
→参照するレジスタ番号を制限することによりオペランドを小さくする
命令により以下のレンジで参照できるレジスタ番号を制限
・レジスタ番号0~15 (オペランド4bit)
・レジスタ番号0~255 (オペランド8bit)
・レジスタ番号0~65535 (オペランド16bit)
なぜDalvik仮想マシンは
レジスタマシンなのか?
 スタックマシンの欠点
・オペランドスタックを操作するための命令が必要なケースがある
→そのため命令数がレジスタマシンにくらべて多くなるケースがある



  パフォーマンスの問題
・命令数が多いことによる「インタープリタでの」パフォーマンス低下
→インタープリタの設計と実装を理解すると理由がわかる
・JITコンパイラでは起こりにくい問題
→初期のDalvik仮想マシンはインタープリタのみであったのと関連?
→インタープリタのパフォーマンスを優先した可能性がある
一般的なインタープリタの実装
 擬似コードによる例
素朴に書くと擬似コードのようになる。実はオーバーヘッドが大きい。
→どの辺りがオーバーヘッドが大きいのか?


# INSTR = 現在実行中のバイトコード命令
# TBL = オペコードに対応した処理の関数テーブル
LOOP :
   FUNC = TBL[INSTR->OPCODE]
   CALL FUNC(INSTR) # 関数呼び出し
   NEXT INSTR # 次の命令に移動する
   GOTO LOOP # 繰り返し
一般的なインタープリタの
問題点
  重い処理が多い
・ジャンプが多い (ジャンプは最悪10CPUサイクル以上かかる処理)
  1. 命令ごとにループを回す箇所のジャンプ
  2.命令実行ルーチンに飛ぶためのジャンプ
  →このジャンプはCPUによる最適化処理(分岐予測)が効かない
  3. 命令実行ルーチンから戻るためのジャンプ
・テーブル参照がある


 巨大なオーバーヘッド
バイトコード命令が単なる加算である場合は、それそのものの処理は
数CPUサイクルで完了するが、バイトコード命令ごとに発生する
インタープリタのオーバーヘッドは数十サイクル以上ある
Dalvik仮想マシンの
 インタープリタの実装
  擬似コードによる例
・スレッドインタープリタと呼ばれる方式
# 最初の命令処理ルーチンのアドレスをBASE_ADDRとする
# 各命令処理ルーチンの間隔は64バイトでアライメント
.ALIGN 64
OP_A :
   … # ここで命令実行
   NEXT INSTR # 次の命令に移動する
   GOTO BASE_ADDR + 64 * INSTR->OPCODE

.ALIGN 64
OP_B :
   … # ここで命令実行
   NEXT INSTR # 次の命令に移動する
   GOTO BASE_ADDR + 64 * INSTR->OPCODE

… # 以下繰り返し
Dalvik仮想マシン
インタープリタの改善点
 重い処理が少ない

・ジャンプが命令実行ルーチンに飛ぶためのジャンプのみ
→ただしこのジャンプはCPUによる最適化処理(分岐予測)が効かない
・テーブル参照がない
→次の命令のジャンプ先を演算で算出できる


 オーバーヘッドが低減


素朴なインタープリタとくらべるとオーバヘッドが数分の一
ちなみにJITコンパイラを使うと
  重い処理がない
・命令実行のためにジャンプする必要がない
・テーブル参照はない

     更に
・命令の「フェッチ(読み込み処理)」が不要
・命令の「デコード(命令の意味解釈処理)」が不要

   まとめると
・速いのは当たり前
・実行するバイトコードの命令数の多い少ないはあまり関係ない
まとめ
    要約

・実行するバイトコード命令ごとに発生するオーバーヘッドは大きい
・Dalvik仮想マシンではインタープリタを改良、改善している
・しかし依然として実行するバイトコード命令の数は少ないほうが良い


   まとめ

・バイナリサイズはJava仮想マシンの方がだいぶん小さい
・実行速度はDalvik仮想マシンの方が高速にできる「かもしれない」
→インタープリタのパフォーマンスでは有利
→JITコンパイラを採用するとどちらが有利か微妙
おわり

      ご清聴ありがとうございました

More Related Content

What's hot

Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善Ito Takayuki
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがないTakuya ASADA
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方uchan_nos
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例gree_tech
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回Naoyuki Yamada
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 

What's hot (20)

Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 

Viewers also liked

Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Takuya Matsunaga
 
詳解Dexファイルフォーマット
詳解Dexファイルフォーマット詳解Dexファイルフォーマット
詳解DexファイルフォーマットTakuya Matsunaga
 
ここが変だよDalvik仮想マシン
ここが変だよDalvik仮想マシン ここが変だよDalvik仮想マシン
ここが変だよDalvik仮想マシン Takuya Matsunaga
 
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Taku Miyakawa
 
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月Taku Miyakawa
 

Viewers also liked (8)

Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
 
詳解Dexファイルフォーマット
詳解Dexファイルフォーマット詳解Dexファイルフォーマット
詳解Dexファイルフォーマット
 
ここが変だよDalvik仮想マシン
ここが変だよDalvik仮想マシン ここが変だよDalvik仮想マシン
ここが変だよDalvik仮想マシン
 
Deep Leaningと超解像
Deep Leaningと超解像Deep Leaningと超解像
Deep Leaningと超解像
 
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
 
Understanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual MachineUnderstanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual Machine
 
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
 
進化するArt
進化するArt進化するArt
進化するArt
 

Similar to Dalvik仮想マシンのアーキテクチャ 改訂版

4章 Linuxカーネル - 割り込み・例外 4
 4章 Linuxカーネル - 割り込み・例外 4 4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4mao999
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64FFRI, Inc.
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)Takeshi Yamamuro
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点Kuniyasu Suzaki
 
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキストVxRail ChampionClub
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka CODE BLUE
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話Preferred Networks
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタl_b__
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺MITSUNARI Shigeo
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会Hirotaka Kawata
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介IBM Analytics Japan
 
2014 dart flight school in Tokyo
2014 dart flight school in Tokyo2014 dart flight school in Tokyo
2014 dart flight school in Tokyonothingcosmos
 

Similar to Dalvik仮想マシンのアーキテクチャ 改訂版 (20)

4章 Linuxカーネル - 割り込み・例外 4
 4章 Linuxカーネル - 割り込み・例外 4 4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
 
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
Let's play with Goldfish
Let's play with GoldfishLet's play with Goldfish
Let's play with Goldfish
 
Interrupts on xv6
Interrupts on xv6Interrupts on xv6
Interrupts on xv6
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
2014 dart flight school in Tokyo
2014 dart flight school in Tokyo2014 dart flight school in Tokyo
2014 dart flight school in Tokyo
 

More from Takuya Matsunaga

光コラボは契約してはいけない
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
 
ソフトウェア組織マインド
ソフトウェア組織マインドソフトウェア組織マインド
ソフトウェア組織マインドTakuya Matsunaga
 
ある製造業のチームトポロジー
ある製造業のチームトポロジーある製造業のチームトポロジー
ある製造業のチームトポロジーTakuya Matsunaga
 
クリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみたクリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみたTakuya Matsunaga
 
組込エンジニアのための深層学習
組込エンジニアのための深層学習組込エンジニアのための深層学習
組込エンジニアのための深層学習Takuya Matsunaga
 
Design by contractとホーア論理
Design by contractとホーア論理Design by contractとホーア論理
Design by contractとホーア論理Takuya Matsunaga
 

More from Takuya Matsunaga (6)

光コラボは契約してはいけない
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
 
ソフトウェア組織マインド
ソフトウェア組織マインドソフトウェア組織マインド
ソフトウェア組織マインド
 
ある製造業のチームトポロジー
ある製造業のチームトポロジーある製造業のチームトポロジー
ある製造業のチームトポロジー
 
クリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみたクリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみた
 
組込エンジニアのための深層学習
組込エンジニアのための深層学習組込エンジニアのための深層学習
組込エンジニアのための深層学習
 
Design by contractとホーア論理
Design by contractとホーア論理Design by contractとホーア論理
Design by contractとホーア論理
 

Dalvik仮想マシンのアーキテクチャ 改訂版