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

提供:MonoBook
ページの作成:「'''バイトコード'''とは、中間コードの実装形式のひとつで、すべてのオペランド(命令)を固定長のバイト数(主に...」
 
 
(4人の利用者による、間の11版が非表示)
1行目: 1行目:
'''バイトコード'''とは、[[中間コード]]の実装形式のひとつで、すべての[[オペランド]](命令)を固定長の[[バイト]]数(主に1バイト固定長)で表現する形式のものをいう。
'''バイトコード'''([[英語]]:byte code)とは、[[ネイティブコード]]および[[中間コード]]の実装形式のひとつで、すべての[[オペコード]](命令)を固定長の[[バイト]]数(主に1バイト固定長)で表現する形式のものをいう。固定長の特定バイト数で区切るのでバイトコードという名前だという。


バイトコードは[[オペコード]]が[[固定長]]であるため、命令の[[パース]]時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードを[[ネイティブコード]]に変換し実行する[[インタプリタ]]や[[JITコンパイラ]]の実装をシンプルにできるなどのメリットがある。例えるならば[[CPU]]でいう[[RISC]]の概念に近い。
== 概要 ==
ながらく市場を支配した[[x86]][[ネイティブコード]]が可変長、[[Java]][[中間コード]]が固定長だったこともあり「バイトコード=Java」という図式が定着しています。


近年では[[オペコード]][[固定長]]でない[[中間コード]]形式についてもバイトコードと呼び、[[中間コード]]とバイトコードをイコールとする人も増えているが、正確にはバイトコードではない。たとえば[[.NET Framework]]で用いられる[[マネージドコード]]の[[オペコード]]は[[可変長]]であり、バイトコードではない。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。
[[スマートフォン]]の普及で急激に勢力を伸ばした[[ARM]]も固定長のバイトコードですが、これだけarmだらけの世の中でも「バイトコード=Java=中間コード」という図式は変わっていません。あらゆるゲーム機は[[ファミコン]]なのと同じです。


バイトコードは[[Smalltalk]]や[[Java]]で使われている。とくに[[Java]]の人気に押されるかたちで[[Javaバイトコード]]が爆発的に普及したことで、バイトコードと[[Javaバイトコード]]を同一視する人も増えている。ただし、そんな細かいことを気にしても仕方がないので気にしてはならない。
== バイトコードの利点 ==
バイトコードは[[オペコード]]が[[固定長]]であるため、命令の[[パース]]時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードを[[ネイティブコード]]に変換し実行する[[インタプリタ]]や[[JITコンパイラ]]の実装をシンプルにできるなどのメリットがあり、[[ARM]]のような[[半導体]]では[[電子回路]]を簡略化できるという。例えるならば[[CPU]]でいう[[RISC]]の概念に近い。
 
== 主なバイトコード形式 ==
* [[Javaバイトコード]] - [[Java VM]]で使われている8ビット表現の命令セット。
* [[Thumbコード]] - ARMプロセッサの16ビット表現の命令セット。
* [[ARMコード]]   - ARMプロセッサの32ビット表現の命令セット。


== 関連項目 ==
== 関連項目 ==
* [[Javaバイトコード]] - [[SPARC]]の命令セットに近い。同じ会社だから当然と言えば当然。
* [[中間コード]]
* [[中間コード]]
* [[マネージドコード]]
* [[マネージドコード]]


== 参考文献 ==
[[category: プログラミング]]
<references/>
 
== 外部リンク ==
 
{{stub}}

2024年9月26日 (木) 05:59時点における最新版

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

概要[編集 | ソースを編集]

ながらく市場を支配したx86ネイティブコードが可変長、Java中間コードが固定長だったこともあり「バイトコード=Java」という図式が定着しています。

スマートフォンの普及で急激に勢力を伸ばしたARMも固定長のバイトコードですが、これだけarmだらけの世の中でも「バイトコード=Java=中間コード」という図式は変わっていません。あらゆるゲーム機はファミコンなのと同じです。

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

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

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

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