JVM、研究では最近、割れた瓶についての話、私たちに迷惑を考えを導くために、この分野での経験を持っています..
参照
共通コマンド
1 |
|
ローカル変数の型
特殊文字表現 | タイプ | 説明 |
---|---|---|
C | CHAR | char型 |
私 | int型 | int型 |
リットル | 長いです | ロングタイプ |
S | ショート | ショートタイプ |
B | バイト | バイト型 |
F | 浮く | float型 |
から | ブーリアン | ブーリアン |
A | 参照 | 引用文 |
メソッドの情報
1 |
L1 |
ローカル変数パラメータのLocalVariable
ローカルテーブルサイズMAXLOCALS
オペランドスタックサイズMAXSTACK
命令
演算命令
2つのための演算命令
操作数栈
の特定の操作の値が行われ、その結果がバックに格納されている操作栈
トップ。
- 加算命令:IADD、ラッド、FADD、DADD
- 減算命令:Isubは、LSUB、FSUB、DSUB
- 乗算命令:IMUL、lmul、FMUL、DMUL
- 除算命令:IDIV、ldiv、FDIV、ddiv
- 剰余命令:IREM、lrem、FREM、drem
- 反転命令:INEG、LENG、FNEG、dneg
- モーションコマンド:ISHL、ishr、iushr、lshl、LSHR、lushr
- ビット単位または命令:IOR、LOR
- ビットAND命令:IAND、土地
- ビットごとのXOR命令:IXOR、lxor
- インクリメントローカル変数命令:IINC
- 命令の比較:dcmpg、dcmpl、fcmpg、fcmpl、LCMP
ロードとストア命令
用
局部变量表
と操作数栈
の間で前後に転送
- ILOAD、iload_ <n>は、lload、lload_ <n>は、フロート、fload_ <n>は、DLOAD、dload_ <n>は、aload、aload_ <N>:ローカル変数を含む命令のオペランドスタックにロードされます。
- ローカル変数ターゲット・オペランド命令にスタックから値を格納する:istore、istore_ <n>は、lstore、lstore_ <n>は、fstore、fstore_ <n>は、dstore、dstore_ <n>は、astore、astore_ <N>
- bipush、sipush、LDC、ldc_w、ldc2_w、aconst_null、iconst_ml、iconst_ <I>、lconst_ <L>、fconst_ <F>、dconst_ <D>:定数オペランドスタック命令にロードされます
- ローカル変数テーブルのインデックス命令アクセス:ワイド
iload_は<I>のような、一連の命令を表すアングルブラケットを終了命令の一部を、そのようなiload_1、これらは汎用命令のオペランドを有する命令のセットである、iload_0を表します。
演算命令
2つのうち
操作数栈
、特定の操作上の値が行われ、その結果がに戻って格納されている操作栈
トップ
- 加算命令:IADD、ラッド、FADD、DADD
- 減算命令:Isubは、LSUB、FSUB、DSUB
- 乗算命令:IMUL、lmul、FMUL、DMUL
- 除算命令:IDIV、ldiv、FDIV、ddiv
- 剰余命令:IREM、lrem、FREM、drem
- 反転命令:INEG、LENG、FNEG、dneg
- モーションコマンド:ISHL、ishr、iushr、lshl、LSHR、lushr
- ビット単位または命令:IOR、LOR
- ビットAND命令:IAND、土地
- ビットごとのXOR命令:IXOR、lxor
- インクリメントローカル変数命令:IINC
- 命令の比較:dcmpg、dcmpl、fcmpg、fcmpl、LCMP
型変換
2台のJava仮想マシンの数値型変換
JVMは、ワイドコンバージョンタイプ(タイプの広い範囲に小さな型変換)をサポートします。
- 長く、float型、double型にint型
- フロートに長いタイプ、ダブルタイプ
- double型の浮動小数点
オブジェクトの作成と操作
クラスのインスタンスと配列はオブジェクト、別のバイトコード命令とクラスのインスタンスと配列を作成するための操作を使用するJava仮想マシンですが。
- インスタンスを作成するためのコマンド:新しいです
- NEWARRAY、anewarray、multianewarray:コマンドの配列を作成します。
- 命令のアクセスフィールド:putstaticのgetField、putfield、getstatic、
- 配列要素は、オペランドスタック命令にロードされる:baload、caload、saload、iaload、laload、faload、daload、aaload
- オペランドスタックは、配列要素に格納された値は、実行される:bastore、castore、castore、sastore、iastore、fastore、dastore、aastore
- 命令は、配列の長さをフェッチ:にarrayLength
- 型チェック命令の例:instanceofは、checkcast
管理命令のオペランドスタック
直接操作命令のオペランドスタック:ポップ、POP2、DUP、dup2の、dup_x1、dup2_x1、dup_x2、dup2_x2とスワップ
注:スタックに(DUP)/ポップ・スタック(POP)
制御転送命令
- 条件分岐:ifeq、もし大きな柱 トークJVMバイトコード LT、ifle、ifne、IFGT、 IFGE、IFNULL、ifnotnull、if_cmpeq、if_icmpne、if_icmlt、if_icmpgt など
- 複雑な条件分岐:tableswitch、lookupswitch
- 無条件分岐:後藤、goto_w、JSR、jsr_w、RET
メソッドの呼び出しと復帰の指示
- INVOKEVIRTUAL命令:呼び出しオブジェクトのインスタンスメソッドは、送出され(割り当てられた仮想マシン)オブジェクトの実際のタイプに基づい。
- invokeinterface命令:右のメソッド呼び出しを求める方法を検索するには、このインターフェイスを実装する実行時オブジェクトのインターフェイスメソッドを呼び出します。
- invokespecial:呼び出しがあって、特別な治療インスタンスメソッド、インスタンス初期化メソッド、親プライベートメソッドや方法を必要
- invokestatic:(静的)クラスメソッドを呼び出します
- メソッドのリターン命令がireturn(戻り値はブール値、バイト、文字、ショート、及びINTである)、lreturn、freturn、drturnとareturn、ボイド方法のための別のリターン、インスタンス初期化メソッド、クラス、およびを含む、戻り型際立った値であります私は、クラスの初期化メソッドを使用するインタフェース。
シンクロナス
例えば:
1 |
//クラスのバージョン52.0(52) |