Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LTで分かる!アセンブラ

4,587 views

Published on

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

Published in: Technology
  • Be the first to comment

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. ご清聴 ありがとうございました

×