「バイトコード」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Fallout New Tokyo
 
(他の1人の利用者による、間の4版が非表示)
1行目: 1行目:
'''バイトコード'''(byte code)とは、[[中間コード]]の実装形式のひとつで、すべての[[オペコード]](命令)を固定長の[[バイト]]数(主に1バイト固定長)で表現する形式のものをいう。
+
'''バイトコード'''([[英語]]:byte code)とは、[[ネイティブコード]]および[[中間コード]]の実装形式のひとつで、すべての[[オペコード]](命令)を固定長の[[バイト]]数(主に1バイト固定長)で表現する形式のものをいう。固定長の特定バイト数で区切るのでバイトコードという名前だという。
  
バイトコードは[[オペコード]]が[[固定長]]であるため、命令の[[パース]]時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードを[[ネイティブコード]]に変換し実行する[[インタプリタ]][[JITコンパイラ]]の実装をシンプルにできるなどのメリットがある。例えるならば[[CPU]]でいう[[RISC]]の概念に近い。
+
== バイトコードの定義 ==
 +
近年では[[オペコード]]が[[固定長]]でない[[中間コード]]形式についてもバイトコードと呼び、また[[中間コード]]とバイトコードをイコールとする人も増えているが、正確にはどちらもイコールではない。たとえば[[.NET Framework]]で用いられる[[マネージドコード]][[オペコード]][[可変長]]であり、バイトコードではない。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。
  
近年では[[オペコード]]が[[固定長]]でない[[中間コード]]形式についてもバイトコードと呼び、[[中間コード]]とバイトコードをイコールとする人も増えているが、正確にはイコールではない。たとえば[[.NET Framework]]で用いられる[[マネージドコード]][[オペコード]][[可変長]]であり、バイトコードではない。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。
+
バイトコードは[[Smalltalk]]や[[Java]]で使われている。とくに[[Java]]の人気に押されるかたちで[[Javaバイトコード]]が爆発的に普及したことで、バイトコードと[[Javaバイトコード]]を同一視する人も増えているが、正確にはイコールではない。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。
 +
 
 +
また、[[Java]]の人気によりバイトコードは[[中間コード]]とイコールと思われているが、[[ARMプロセッサー]]で使われている[[ARMコード]]のように[[ネイティブコード]]の場合もある。
 +
 
 +
== バイトコードの利点 ==
 +
バイトコードは[[オペコード]]が[[固定長]]であるため、命令の[[パース]]時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードを[[ネイティブコード]]に変換し実行する[[インタプリタ]]や[[JITコンパイラ]]の実装をシンプルにできるなどのメリットがあり、[[ARM]]のような[[半導体]]では[[電子回路]]を簡略化できるという。例えるならば[[CPU]]でいう[[RISC]]の概念に近い。
  
バイトコードは[[Smalltalk]]や[[Java]]で使われている。とくに[[Java]]の人気に押されるかたちで[[Javaバイトコード]]が爆発的に普及したことで、バイトコードと[[Javaバイトコード]]を同一視する人も増えているが、正確にはイコールではない。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。
+
== 主なバイトコード形式 ==
 +
* [[Javaバイトコード]] - [[Java VM]]で使われている8ビット表現の命令セット。
 +
* [[Thumbコード]] - ARMプロセッサの16ビット表現の命令セット。
 +
* [[ARMコード]]   - ARMプロセッサの32ビット表現の命令セット。
  
 
== 関連項目 ==
 
== 関連項目 ==
* [[Javaバイトコード]]
+
* [[Javaバイトコード]] - [[SPARC]]の命令セットに近い。同じ会社だから当然と言えば当然。
 
* [[中間コード]]
 
* [[中間コード]]
 
* [[マネージドコード]]
 
* [[マネージドコード]]

2014年3月6日 (木) 05:49時点における最新版

バイトコード英語:byte code)とは、ネイティブコードおよび中間コードの実装形式のひとつで、すべてのオペコード(命令)を固定長のバイト数(主に1バイト固定長)で表現する形式のものをいう。固定長の特定バイト数で区切るのでバイトコードという名前だという。

バイトコードの定義[編集 | ソースを編集]

近年ではオペコード固定長でない中間コード形式についてもバイトコードと呼び、また中間コードとバイトコードをイコールとする人も増えているが、正確にはどちらもイコールではない。たとえば.NET Frameworkで用いられるマネージドコードオペコード可変長であり、バイトコードではない。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。

バイトコードはSmalltalkJavaで使われている。とくにJavaの人気に押されるかたちでJavaバイトコードが爆発的に普及したことで、バイトコードとJavaバイトコードを同一視する人も増えているが、正確にはイコールではない。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。

また、Javaの人気によりバイトコードは中間コードとイコールと思われているが、ARMプロセッサーで使われているARMコードのようにネイティブコードの場合もある。

バイトコードの利点[編集 | ソースを編集]

バイトコードはオペコード固定長であるため、命令のパース時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードをネイティブコードに変換し実行するインタプリタJITコンパイラの実装をシンプルにできるなどのメリットがあり、ARMのような半導体では電子回路を簡略化できるという。例えるならばCPUでいうRISCの概念に近い。

主なバイトコード形式[編集 | ソースを編集]

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]


外部リンク[編集 | ソースを編集]