SlideShare a Scribd company logo
Hello !
Intermediate Language
MGK 三重合同懇親会 2015/03/21
Center CLR Kouji Matsui (@kekyo2)
いつもながら
テキトーな準備不足感でアレ
そこのドトールで書きました
自己紹介
 Center CLRという、名古屋のコミュニティをやってます。
 名前の通り、.NETCLRのコア技術とその周辺の勉強会がメイ
ンです。
 会社やってます。
 現在はアーキで、おおざっぱにシステム全体からスクラムマ
スターとかいろいろやってます。
 認定スクラムマスターです。
Intermediate
Languageとは
 MSIL、.NETの中核を支える技術
 JVMとCLRは思想が違うんですが、ILだけで見ると似ていると
ころが多いため、
「ぶっちゃけ、Javaのバイトコードの.NET版」
 とか言われたりしますが、多分中の人が聞くと怒ると思いま
す(CLRは仮想マシンじゃない、とか)。
ILの構造
 JVMもそうですが、CLRも仮想的なCPUを定義しています。
 この仮想CPUのアーキテクチャは、俗に「スタックマシン」
と呼ばれています。
 計算に必要な値を、一旦「スタック」に入れて、計算し、結
果もスタックに入れるから、です。
 C = A + B B
A
Push
スタック
ILの構造
 JVMもそうですが、CLRも仮想的なCPUを定義しています。
 この仮想CPUのアーキテクチャは、俗に「スタックマシン」
と呼ばれています。
 計算に必要な値を、一旦「スタック」に入れて、計算し、結
果もスタックに入れるから、です。
 C = A + B B
A
Pop
スタック
仮想CPU
ILの構造
 JVMもそうですが、CLRも仮想的なCPUを定義しています。
 この仮想CPUのアーキテクチャは、俗に「スタックマシン」
と呼ばれています。
 計算に必要な値を、一旦「スタック」に入れて、計算し、結
果もスタックに入れるから、です。
 C = A + B
C
スタック
仮想CPU
では早速  あとはデモで(ガクブル)
ご静聴
ありがとうご
ざいました
 本日のネタは、ブログとGitHubで公開します。
 http://www.kekyo.net/
 http://github.com/kekyo
 Center CLRの第三回勉強会、企画中です。近日中に公開しま
す。エントリーはDoorKeeperでよろしくお願いします。
 http://centerclr.net/
 http://centerclr.doorkeeper.jp/

More Related Content

What's hot (20)

Thread affinity and CPS
Thread affinity and CPSThread affinity and CPS
Thread affinity and CPS
Kouji Matsui
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
 
continuatioN Linking
continuatioN LinkingcontinuatioN Linking
continuatioN Linking
Kouji Matsui
 
Xtext 紹介
Xtext 紹介Xtext 紹介
Xtext 紹介
Akira Tanaka
 
この実装には問題がある!
この実装には問題がある!この実装には問題がある!
この実装には問題がある!
GOMI NINGEN
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
Narami Kiyokura
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
 
MBSD ツールチェーンと今後の活動
MBSD ツールチェーンと今後の活動MBSD ツールチェーンと今後の活動
MBSD ツールチェーンと今後の活動
Akira Tanaka
 
TypeScriptはいいぞ
TypeScriptはいいぞTypeScriptはいいぞ
TypeScriptはいいぞ
Jun Suzuki
 
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
 
IDEALIZE YOU
IDEALIZE YOUIDEALIZE YOU
IDEALIZE YOU
佑介 九岡
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable Type
Hajime Fujimoto
 
Lt 20130302 1
Lt 20130302 1Lt 20130302 1
Lt 20130302 1
Tomoyuki Obi
 
モデルベースソフトウェア開発
モデルベースソフトウェア開発モデルベースソフトウェア開発
モデルベースソフトウェア開発
Akira Tanaka
 
Intelli code
Intelli codeIntelli code
Intelli code
m ishizaki
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできること
kamiyam .
 
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 20174 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
 
広がる .Net
広がる .Net広がる .Net
広がる .Net
信之 岩永
 
Thread affinity and CPS
Thread affinity and CPSThread affinity and CPS
Thread affinity and CPS
Kouji Matsui
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
 
continuatioN Linking
continuatioN LinkingcontinuatioN Linking
continuatioN Linking
Kouji Matsui
 
この実装には問題がある!
この実装には問題がある!この実装には問題がある!
この実装には問題がある!
GOMI NINGEN
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
 
MBSD ツールチェーンと今後の活動
MBSD ツールチェーンと今後の活動MBSD ツールチェーンと今後の活動
MBSD ツールチェーンと今後の活動
Akira Tanaka
 
TypeScriptはいいぞ
TypeScriptはいいぞTypeScriptはいいぞ
TypeScriptはいいぞ
Jun Suzuki
 
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable Type
Hajime Fujimoto
 
モデルベースソフトウェア開発
モデルベースソフトウェア開発モデルベースソフトウェア開発
モデルベースソフトウェア開発
Akira Tanaka
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできること
kamiyam .
 
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 20174 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
 

More from Kouji Matsui (20)

Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
Kouji Matsui
 
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overviewMatrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overview
Kouji Matsui
 
Fun with BrainPad
Fun with BrainPadFun with BrainPad
Fun with BrainPad
Kouji Matsui
 
What's Functional?
What's Functional?What's Functional?
What's Functional?
Kouji Matsui
 
Pitfall for WioLTE
Pitfall for WioLTEPitfall for WioLTE
Pitfall for WioLTE
Kouji Matsui
 
How to make the calculator
How to make the calculatorHow to make the calculator
How to make the calculator
Kouji Matsui
 
Write common, run anywhere
Write common, run anywhereWrite common, run anywhere
Write common, run anywhere
Kouji Matsui
 
Locality of Reference
Locality of ReferenceLocality of Reference
Locality of Reference
Kouji Matsui
 
You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.
Kouji Matsui
 
How to meets Async and Task
How to meets Async and TaskHow to meets Async and Task
How to meets Async and Task
Kouji Matsui
 
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITBeachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Kouji Matsui
 
Async DeepDive basics
Async DeepDive basicsAsync DeepDive basics
Async DeepDive basics
Kouji Matsui
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
 
不健康なIt戦士を健康的にするアレの話
不健康なIt戦士を健康的にするアレの話不健康なIt戦士を健康的にするアレの話
不健康なIt戦士を健康的にするアレの話
Kouji Matsui
 
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
 
Final LINQ Extensions II
Final LINQ Extensions IIFinal LINQ Extensions II
Final LINQ Extensions II
Kouji Matsui
 
Final LINQ Extensions
Final LINQ ExtensionsFinal LINQ Extensions
Final LINQ Extensions
Kouji Matsui
 
ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級
Kouji Matsui
 
抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へ抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へ
Kouji Matsui
 
プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!
Kouji Matsui
 
Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
Kouji Matsui
 
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overviewMatrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overview
Kouji Matsui
 
What's Functional?
What's Functional?What's Functional?
What's Functional?
Kouji Matsui
 
Pitfall for WioLTE
Pitfall for WioLTEPitfall for WioLTE
Pitfall for WioLTE
Kouji Matsui
 
How to make the calculator
How to make the calculatorHow to make the calculator
How to make the calculator
Kouji Matsui
 
Write common, run anywhere
Write common, run anywhereWrite common, run anywhere
Write common, run anywhere
Kouji Matsui
 
Locality of Reference
Locality of ReferenceLocality of Reference
Locality of Reference
Kouji Matsui
 
You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.
Kouji Matsui
 
How to meets Async and Task
How to meets Async and TaskHow to meets Async and Task
How to meets Async and Task
Kouji Matsui
 
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITBeachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Kouji Matsui
 
Async DeepDive basics
Async DeepDive basicsAsync DeepDive basics
Async DeepDive basics
Kouji Matsui
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
 
不健康なIt戦士を健康的にするアレの話
不健康なIt戦士を健康的にするアレの話不健康なIt戦士を健康的にするアレの話
不健康なIt戦士を健康的にするアレの話
Kouji Matsui
 
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
 
Final LINQ Extensions II
Final LINQ Extensions IIFinal LINQ Extensions II
Final LINQ Extensions II
Kouji Matsui
 
Final LINQ Extensions
Final LINQ ExtensionsFinal LINQ Extensions
Final LINQ Extensions
Kouji Matsui
 
ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級
Kouji Matsui
 
抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へ抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へ
Kouji Matsui
 
プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!
Kouji Matsui
 

Hello! intermediate language