メインメニューを開く

差分

バイトコード

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