「バイトコード」の版間の差分
imported>Administrator 細編集の要約なし |
Administrator (トーク | 投稿記録) |
||
| (2人の利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
'''バイトコード''' | '''バイトコード'''([[英語]]:byte code)とは、[[ネイティブコード]]および[[中間コード]]の実装形式のひとつで、すべての[[オペコード]](命令)を固定長の[[バイト]]数(主に1バイト固定長)で表現する形式のものをいう。固定長の特定バイト数で区切るのでバイトコードという名前だという。 | ||
== | == 概要 == | ||
ながらく市場を支配した[[x86]]の[[ネイティブコード]]が可変長、[[Java]]の[[中間コード]]が固定長だったこともあり「バイトコード=Java」という図式が定着しています。 | |||
[[スマートフォン]]の普及で急激に勢力を伸ばした[[ARM]]も固定長のバイトコードですが、これだけarmだらけの世の中でも「バイトコード=Java=中間コード」という図式は変わっていません。あらゆるゲーム機は[[ファミコン]]なのと同じです。 | |||
== バイトコードの利点 == | == バイトコードの利点 == | ||
バイトコードは[[オペコード]]が[[固定長]]であるため、命令の[[パース]]時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードを[[ネイティブコード]]に変換し実行する[[インタプリタ]]や[[JITコンパイラ]] | バイトコードは[[オペコード]]が[[固定長]]であるため、命令の[[パース]]時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードを[[ネイティブコード]]に変換し実行する[[インタプリタ]]や[[JITコンパイラ]]の実装をシンプルにできるなどのメリットがあり、[[ARM]]のような[[半導体]]では[[電子回路]]を簡略化できるという。例えるならば[[CPU]]でいう[[RISC]]の概念に近い。 | ||
== 主なバイトコード形式 == | == 主なバイトコード形式 == | ||
| 21行目: | 19行目: | ||
* [[マネージドコード]] | * [[マネージドコード]] | ||
[[category: プログラミング]] | |||
2024年9月26日 (木) 05:59時点における最新版
バイトコード(英語:byte code)とは、ネイティブコードおよび中間コードの実装形式のひとつで、すべてのオペコード(命令)を固定長のバイト数(主に1バイト固定長)で表現する形式のものをいう。固定長の特定バイト数で区切るのでバイトコードという名前だという。
概要[編集 | ソースを編集]
ながらく市場を支配したx86のネイティブコードが可変長、Javaの中間コードが固定長だったこともあり「バイトコード=Java」という図式が定着しています。
スマートフォンの普及で急激に勢力を伸ばしたARMも固定長のバイトコードですが、これだけarmだらけの世の中でも「バイトコード=Java=中間コード」という図式は変わっていません。あらゆるゲーム機はファミコンなのと同じです。
バイトコードの利点[編集 | ソースを編集]
バイトコードはオペコードが固定長であるため、命令のパース時に命令の長さを調べたりすることによる分岐を減らせ、バイトコードをネイティブコードに変換し実行するインタプリタやJITコンパイラの実装をシンプルにできるなどのメリットがあり、ARMのような半導体では電子回路を簡略化できるという。例えるならばCPUでいうRISCの概念に近い。
主なバイトコード形式[編集 | ソースを編集]
- Javaバイトコード - Java VMで使われている8ビット表現の命令セット。
- Thumbコード - ARMプロセッサの16ビット表現の命令セット。
- ARMコード - ARMプロセッサの32ビット表現の命令セット。
関連項目[編集 | ソースを編集]
- Javaバイトコード - SPARCの命令セットに近い。同じ会社だから当然と言えば当然。
- 中間コード
- マネージドコード