バイトコード: 特定のCPUに依存しない仮想マシン向けのコード。Solidityをコンパイルし、EVMで動作するバイトコードに変換する。EVMはそれぞれのCPUで動作するネイティブコードに変換して実行する。
命令セット
EVMは独自のバイトコードで記述された命令セットを持つ。
- 算術演算とビット単位の論理演算
- 実行コンテクストに関する問い合わせ
- スタック、メモリ、ストレージへのアクセス
- 制御フローに関する操作
- ロギング、関数コール、その他の演算子
使用可能なオペコード
算術演算
- ADD: スタックの上から2つの要素を足し合わせる
- MUL: スタックの上から2つの要素を掛け合わせる
...
スタック操作
- POP: スタックの一番上の項目を削除する
- MLOAD: メモリからワードをロードする
- MSTORE: ワードをメモリに保存する
...