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