SlideShare a Scribd company logo
1 of 27
Download to read offline
ライフゲームを最適化した話
Twitter, Inc.
セキュアなシステムを作ろうクラス
OSECPU-VM ゼミ
ぺーぽん(@Q7U)
OSECPU-VM とは
OSECPU-VM とは
仮想マシンの
オープンソースプロジェクト
OSECPU-VM の目的
・教育
・デバッグ支援とセキュリティ
・互換性
・コード密度
VMゼミの華麗なる連携
VMゼミの華麗なる連携
アプリケーションの実装
VM の実装
ぺーぽん
****
****
言語とコンパイラの実装
私がやったこと
私がやったこと
・ 練習用アプリの作成
・ 再帰に関するバグの指摘
・ api_malloc_InitINT() に関する脆弱性指摘
・ ライフゲームを ASKA で実装
・ ライフゲームを CHAGE で再実装
Conway が考案した人工生命シミュレーション
ライフゲーム
Why ライフゲーム?
・ きれい(小並感)
・ 最適化が見込める
・ 少ない命令で実装可能
Why ライフゲーム?
・ 無限に繁殖するパターン
グライダー銃
・シンプルに
→ 最適化が容易
→ セキュア
仕様
ASKAで書いてみた
ASKAで書いてみた
・ (思ったより大変だった)
・ 最適化の余地あり
for ( i = 0; i != 3; i++ ){
最適化(1) 扱う数値の限定
for ( i = 0; i != 3; i++ ){
for ( i = -1; i != 2; i++ ){
最適化(1) 扱う数値の限定
ベクトル化命令 REM36();
レジスタ番号が1ずつ違う場合
最初の命令以外を省略できる
最適化(2) ベクトル化
最適化の闇は深い
その他いろいろ
デモ
ということで
140 byte
ということで
140 byte
ということで
世界最小!(かも)
ということで
hoge.ask → hoge.chag
中間生成のアセンブリ言語版を参考
→ CHAGE の言語仕様に沿って再実装
ASKA → CHAGE
CHAGEの言語仕様は割りと高級
そこまで苦労せずに再実装できた
がしかし
まとめ
・ 140byteでライフゲームを作った
・ それをCHAGEでも動くようにした

More Related Content

Similar to ライフゲームを最適化した話

Microsoft Azure x EC-CUBE @西浦温泉
Microsoft Azure x EC-CUBE @西浦温泉Microsoft Azure x EC-CUBE @西浦温泉
Microsoft Azure x EC-CUBE @西浦温泉Kentaro Ohkouchi
 
Microsoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとMicrosoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとKinoshita Miku
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめkinunori
 
【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!
【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!
【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!Daisuke Masubuchi
 
20191216 AWS re:Invent 2019 Game Sessions Lightning
20191216 AWS re:Invent 2019 Game Sessions Lightning20191216 AWS re:Invent 2019 Game Sessions Lightning
20191216 AWS re:Invent 2019 Game Sessions LightningAmazon Web Services Japan
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたKohei Kadowaki
 
Memtest86をかけてみた話
Memtest86をかけてみた話Memtest86をかけてみた話
Memtest86をかけてみた話Yasuaki Sera
 
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...Trainocate Japan, Ltd.
 
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門TATSUYA HAYAMIZU
 
Unity勉強会資料2014-05-31
Unity勉強会資料2014-05-31Unity勉強会資料2014-05-31
Unity勉強会資料2014-05-31Tomo Mizoe
 
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!Hiroko Umetsu
 
Co-Simulation mechatronics and software
Co-Simulation mechatronics and softwareCo-Simulation mechatronics and software
Co-Simulation mechatronics and softwareKeiju Anada
 
【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋
【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋
【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋Kentaro Ohkouchi
 
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオンKohki Nakaji
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)Masanori Ishigami
 
仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話m ishizaki
 
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバシスコシステムズ合同会社
 

Similar to ライフゲームを最適化した話 (20)

Microsoft Azure x EC-CUBE @西浦温泉
Microsoft Azure x EC-CUBE @西浦温泉Microsoft Azure x EC-CUBE @西浦温泉
Microsoft Azure x EC-CUBE @西浦温泉
 
Microsoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとMicrosoft azureとdockerとansibleと
Microsoft azureとdockerとansibleと
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
 
【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!
【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!
【de:code19】最高のゲームをつくろう! マイクロソフト Game Stack でゲーム開発をしよう!
 
20191216 AWS re:Invent 2019 Game Sessions Lightning
20191216 AWS re:Invent 2019 Game Sessions Lightning20191216 AWS re:Invent 2019 Game Sessions Lightning
20191216 AWS re:Invent 2019 Game Sessions Lightning
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
 
Memtest86をかけてみた話
Memtest86をかけてみた話Memtest86をかけてみた話
Memtest86をかけてみた話
 
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
 
AppCenter
AppCenterAppCenter
AppCenter
 
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
 
Unity勉強会資料2014-05-31
Unity勉強会資料2014-05-31Unity勉強会資料2014-05-31
Unity勉強会資料2014-05-31
 
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
 
Co-Simulation mechatronics and software
Co-Simulation mechatronics and softwareCo-Simulation mechatronics and software
Co-Simulation mechatronics and software
 
【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋
【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋
【初心者向け】EC-CUBE プラグイン作成 ハンズオンセミナー @ 名古屋
 
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
vFabricを触ろう
vFabricを触ろうvFabricを触ろう
vFabricを触ろう
 
仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話
 
Ma8 Caravan 大阪 rev1
Ma8 Caravan 大阪 rev1Ma8 Caravan 大阪 rev1
Ma8 Caravan 大阪 rev1
 
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
 

ライフゲームを最適化した話