「マネージコード」の版間の差分
表示
削除された内容 追加された内容
編集の要約なし |
m Bot作業依頼: Apple関連記事の改名に伴うリンク修正依頼 (Apple|Apple) - log |
||
9行目: | 9行目: | ||
コードが実行される際、CILは仮想実行システム (VES) で実行環境(プロセッサアーキテクチャ)に依存した[[機械語]]にコンパイルされる。このコンパイルはマネージ実行環境のコンパイラによってなされるので、マネージ実行環境はコードが何をしようとしているのかを完全に知ることができる。故に[[ガベージコレクション]]の[[フック (プログラミング)|フック]]や[[例外処理]]、[[型システム|型安全性]]の保証、配列境界のチェックなどを行うことができる。 |
コードが実行される際、CILは仮想実行システム (VES) で実行環境(プロセッサアーキテクチャ)に依存した[[機械語]]にコンパイルされる。このコンパイルはマネージ実行環境のコンパイラによってなされるので、マネージ実行環境はコードが何をしようとしているのかを完全に知ることができる。故に[[ガベージコレクション]]の[[フック (プログラミング)|フック]]や[[例外処理]]、[[型システム|型安全性]]の保証、配列境界のチェックなどを行うことができる。 |
||
これは古典的に[[ジャストインタイムコンパイル方式|JITコンパイル]]と言われる手法である。しかし多くのJITコンパイラと違い、仮想機械が機械語に変換する擬似機械語が格納されたファイルは環境依存の機械語([[x86]]や[[PowerPC]]など)をも含むことができる。これは[[ |
これは古典的に[[ジャストインタイムコンパイル方式|JITコンパイル]]と言われる手法である。しかし多くのJITコンパイラと違い、仮想機械が機械語に変換する擬似機械語が格納されたファイルは環境依存の機械語([[x86]]や[[PowerPC]]など)をも含むことができる。これは[[Apple]]の[[Universal Binary]]の考えに似ている。 |
||
== その他の用例 == |
== その他の用例 == |
2021年5月20日 (木) 11:42時点における版
マネージコード (managed code) とは、.NET Frameworkにおける共通言語基盤 (CLI) に準拠した仮想機械上で実行される命令(コード)のことである。
これに対してマネージコード以外のコードはアンマネージコード (unmanaged code) やネイティブコード (native code) と呼ばれる。
マネージコードの実行
マネージコードのプログラムは通常C#やVB.NETといった人間が読み書きしやすい言語で書かれ、共通中間言語 (CIL) にコンパイルされる。
コードが実行される際、CILは仮想実行システム (VES) で実行環境(プロセッサアーキテクチャ)に依存した機械語にコンパイルされる。このコンパイルはマネージ実行環境のコンパイラによってなされるので、マネージ実行環境はコードが何をしようとしているのかを完全に知ることができる。故にガベージコレクションのフックや例外処理、型安全性の保証、配列境界のチェックなどを行うことができる。
これは古典的にJITコンパイルと言われる手法である。しかし多くのJITコンパイラと違い、仮想機械が機械語に変換する擬似機械語が格納されたファイルは環境依存の機械語(x86やPowerPCなど)をも含むことができる。これはAppleのUniversal Binaryの考えに似ている。
その他の用例
JavaやScala、KotlinなどのJava仮想マシン上で動作する言語もまた、中間表現であるJavaバイトコードを出力できる言語であり、管理された安全なコードを記述できるという意味でマネージ言語と呼ばれることもある[1]。