メインメニューを開く

差分

バイトコード

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