SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
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コンパイラを採用するとどちらが有利か微妙
おわり

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

Weitere ähnliche Inhalte

Was ist angesagt?

1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]DeNA
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターンSoudai Sone
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyKazuhito Miura
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 

Was ist angesagt? (20)

1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
 
ゆるバグ
ゆるバグゆるバグ
ゆるバグ
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
Java8でRDBMS作ったよ
Java8でRDBMS作ったよJava8でRDBMS作ったよ
Java8でRDBMS作ったよ
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von Takuya Matsunaga (6)

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

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