Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

LTで分かる!アセンブラ

4.791 visualizaciones

Publicado el

2018.10.22 Unity ECS完全に理解した勉強会でのLTのスライド資料です。

Publicado en: Tecnología
  • Inicia sesión para ver los comentarios

LTで分かる!アセンブラ

  1. 1. @tnayuki LTで分かる! アセンブラ
  2. 2. 自己紹介 • @tnayuki • 趣味: メディアアーティスト • 最近の作品 • 人力で仮想通貨を採掘する装置 • バーチャルマニ車 • ゲームエンジンの会社で働いています
  3. 3. ECS & Burst Compiler リリース(プレビュー)
  4. 4. Burst Inspector
  5. 5. 大アセンブラ時代の はじまりである
  6. 6. 今日する話 • Burstが出力したアセンブラを読むのに最低限必 要な知識 • C#コードがどういう機械語としてCPUに実行さ れているか分かる • SIMD命令がちゃんと使われているか • 関数がちゃんとインライン化されているか
  7. 7. 今日しない話 • 最近のCPUの機能の話
 (キャッシュ/パイプライン/分岐予測/アウトオブオー ダー実行/etc…) • ARMアーキテクチャの話
  8. 8. アセンブリ言語の命令の 構成(x64・インテル記法) mov rax , 1 z オペコード (操作内容) オペランド (操作対象) ソースデスティネーショ ン
  9. 9. オペランドの種類(x64) • レジスタ • 例: rax(64bit), eax(32bit), ax(16bit) • メモリアドレス • 例: [rax], [rax+4] • 即値 • 例: 1234
  10. 10. オペコードの種類 基本的なもの(x64)・その1 • mov…移動命令(メモリー→レジスタ、レジスター →メモリ、即値→レジスター) • add/sub/mul/imul/div/idiv…算術命令(足し算/引 き算/掛け算/割り算) • inc/dev…インクリメント/デクリメント • or/and/xor…論理演算命令(OR/AND/XOR)
  11. 11. オペコードの種類 基本的なもの(x64)・その2 • cmp …比較命令 • push/pop…スタック操作命令 • jmp…ジャンプ命令 • call/ret…サブルーチン呼び出し/戻り
  12. 12. オペコードの種類 その他(x64) • cmpxchg…俗に言うCAS命令
 
 ※.NETのInterlocked.CompareExchangeメソッドはこの命令 に変換される • f〜…だいたい浮動小数点演算命令 • なんか長いやつ…だいたいSIMD命令
  13. 13. 実際のBurst Inspector の出力を見てみよう
  14. 14. アセンブラ怖くないヨ 君もBurst Inspectorで CPUの嬌声を聞こう!
  15. 15. もっとアセンブラやCPUについて知りたい方 は Unity Connectの「Unityお学びグループ」まで • アセンブラって何? • CPUって何? • メモリって何? • 呼び出し規約ってなに? • バス幅って何? • アライメントって何? • キャッシュって何? etc…
  16. 16. ご清聴 ありがとうございました

×