前川/研究のための/Java Processor/Java Byte Code (function edition)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[前川/研究のための/Java Processor]]
*データの操作 [#m74f5175]
**スタック [#jc2909f9]
***定数をスタックに積む [#j2c67cbf]
-bipush <n>
--符合付8bitのint型をスタックに積む
-sipush <n>
--符合付16bitのint型をスタックに積む
-ldc <index>
--constant poolに入っているデータをスタック上に積む
-ldc_w
--ldcのwide版
-%%ldc2_w%%
--long or double 用
-aconst_null
--null object referenceをスタックに積む
-iconst_m1
--"-1"をスタックに積む
-iconst_<n>
--<n>には<0〜5>が入る
--<0〜5>をスタックに積む
-%%lconst_<n>%%
--longのため
-%%fconst_<n>%%
--floatのため
-%%dconst_<n>%%
--doubleのため
***スタックの編集 [#q1eba147]
-nop
--なにもしない
-pop
--スタックから値を取り出す
-pop2
--スタックから2つ値を取り出す
-dup
--スタックのトップをコピーして積む
-dup_x1
--スタックのトップをコピーして2つ下に積む
-dup_x2
--スタックのトップをコピーして3つ下に積む
-dup2
--スタックのトップとその下をコピーして積む
-dup2_x1
--スタックのトップとその下をコピーして2つ下に積む
-dup2_x2
--スタックのトップとその下をコピーして3つ下に積む
-swap
--スタックのトップとその下を入れ替える
**ローカル変数 [#e075bf3d]
***ローカル変数から取り出した値をスタックに積む [#q835e743]
-iload <index>
--ローカル変数に格納された値をstack上に積む。varnumはunsignedの16ビットでローカル変数のアドレス。
-iload_<n>
--<n>には<0〜5>が入る
--ローカル変数に格納された値をstack上に積む。どのローカル変数かは<0〜5>で指定。
-%%lload <index>%%
-%%lload_<n>%%
--longのため
-%%fload <index>%%
-%%fload_<n>%%
--floatのため
-%%dload <index>%%
-%%dload_<n>%%
--doubleのため
-%%aload <index>%%
-%%aload_<n>%%
--arrayのため
***スタックからpopした値をローカル変数に格納する [#p8b8fd85]
-istore <index>
--スタックのトップの値をローカル変数に格納する
-istore_<n>
--<n>には<0〜5>が入る
--スタックのトップの値をローカル変数に格納する
-%%lstore <index>%%
-%%lstore_<n>%%
--longのため
-%%fstore <index>%%
-%%fstore_<n>%%
--floatのため
-%%dstore <index>%%
-%%dstore_<n>%%
--doubleのため
-%%astore <index>%%
-%%astore_<n>%%
--arrayのため
***その他のローカル変数関連インストラクション [#ma44cebe]
-iinc <index> <constant>
--ローカル変数の値を<constant>分インクリメントする。ローカル変数は<index>により指定。
-wide
--indexのbit拡張
**配列 [#t9d7ec19]
***配列の生成 [#yaa394ef]
-%%newarray%%
-%%anewarray%%
-%%multianewarray%%
***配列から値を取り出す [#t462b6f0]
-%%iaload%%
-%%laload%%
-%%faload%%
-%%daload%%
-%%aaload%%
-%%baload%%
-%%caload%%
-%%saload%%
***配列に値を格納する [#w9ce047e]
-%%iastore%%
-%%lastore%%
-%%fastore%%
-%%dastore%%
-%%aastore%%
-%%bastore%%
-%%castore%%
-%%sastore%%
***その他の配列関連インストラクション [#ya878200]
-%%arraylength%%
**オブジェクト [#fd3c1d6b]
***オブジェクトの新規生成 [#kbe4d161]
-new
***フィールドへのアクセス [#d7cbd14d]
-putfield
-getfield
-putstatic
-getstatic
***その他のオブジェクト関連インストラクション [#g7a602dd]
-checkcast
-instanceof
*算術演算と型変換 [#g9e2d0e3]
**算術演算 [#sfeb5d10]
-iadd
--スタックから2つポップして加算しスタックに積む。
-%%ladd%%
-%%fadd%%
-%%dadd%%
-isub
--スタックから2つポップして減算しスタックに積む。
-%%lsub%%
-%%fsub%%
-%%dsub%%
-imul
--スタックから2つポップして乗算しスタックに積む。
-%%lmul%%
-%%fmul%%
-%%duml%%
-idiv
--スタックから2つポップして除算しスタックに積む。
-%%ldiv%%
-%%fdiv%%
-%%ddiv%%
-irem
--スタックから2つポップして除算し余りをスタックに積む。
-%%lrem%%
-%%frem%%
-%%drem%%
-ineg
--スタックから値を取り出し、反転させてスタックに積む。
-%%lneg%%
-%%fneg%%
-%%dneg%%
***論理演算 [#o9cf3f04]
-ishl
--スタックから2つポップしてトップを左シフトしスタックに積む。トップの下の値分だけ左シフト
-ishr
--スタックから2つポップしてトップを右シフトしスタックに積む。トップの下の値分だけ右シフト
-iushr
--スタックから2つポップしてトップを右シフトしスタックに積む。トップの下の値分だけ右シフト
-%%lshl%%
-%%lshr%%
-%%lushr%%
-iand
--スタックから2つポップして論理和をスタックに積む。
-%%land%%
-ior
--スタックから2つポップして論理積をスタックに積む。
-%%lor%%
-ixor
--スタックから2つポップして排他的論理和をスタックに積む。
-%%lxor%%
***型変換 [#zbb8c6b7]
-%%i2l%%
-%%i2f%%
-%%i2d%%
-%%l2i%%
-%%l2f%%
-%%l2d%%
-%%f2i%%
-%%f2l%%
-%%f2d%%
-%%d2i%%
-%%d2l%%
-%%d2f%%
-%%i2b%%
-%%i2c%%
-%%i2s%%
*フロー制御 [#r94fb774]
**実行制御を移す [#j55afc5e]
***条件分岐 [#k77fdb32]
-if<cond> <branchbtye1> <branchbyte2>
--ifeq
--ifne
--iflt
--ifge
--ifgt
--ifle
---スタックからポップしてそれを0と比較、その後に比較が正ならば指定されたアドレスへ移動
-if_icomp<cond>
--if_icmpeq
--if_icmpne
--if_icmplt
--if_icmpgt
--if_icmple
--if_icmpge
---スタックから2つポップしてそれらを比較、その後に比較が正ならば指定されたアドレスへ移動
-ifnull
--スタックからポップしてそれがnullならば指定されたアドレスへ移動
-ifnonnull
--スタックからポップしてそれがnullでなければ指定されたアドレスへ移動
***比較 [#b9fe539d]
-%%lcmp%%
-%%fcmpl%%
-%%fcmpg%%
-%%dcmpl%%
-%%dcmpg%%
***無条件分岐とサブルーチン [#m0e8037f]
-goto <branchbyte1> <branchbyte2>
--指定されたアドレスへジャンプ
-goto_w <branchbyte1> <branchbyte2> <3> <4>
--指定されたアドレスへジャンプ
-jsr <branchbyte1> <branchbyte2>
--指定されたサブルーチンへジャンプ
-jsr_w <branchbyte1> <branchbyte2> <3> <4>
--指定されたサブルーチンへジャンプ
-ret <index>
--サブルーチンから戻る
***テーブルジャンプ [#y3d1195e]
-lookupswitch
-tableswitch
**メソッド [#kb116aa1]
***メソッド呼び出し [#u5864550]
-invokevirtual
-invokespecial
-invokestatic
-invokeinterfave
***メソッドの終了と呼び出し元への復帰 [#j5fbc4ad]
-ireturn
-%%lreturn%%
-%%freturn%%
-%%dreturn%%
-%%areturn%%
-return
*その他 [#s159bec9]
**例外 [#haf0da12]
-athrow
**デバック [#t00c9fbb]
-breakpoint
**モニタ [#v8fdf22a]
-monitorenter
-monitorexit
終了行:
[[前川/研究のための/Java Processor]]
*データの操作 [#m74f5175]
**スタック [#jc2909f9]
***定数をスタックに積む [#j2c67cbf]
-bipush <n>
--符合付8bitのint型をスタックに積む
-sipush <n>
--符合付16bitのint型をスタックに積む
-ldc <index>
--constant poolに入っているデータをスタック上に積む
-ldc_w
--ldcのwide版
-%%ldc2_w%%
--long or double 用
-aconst_null
--null object referenceをスタックに積む
-iconst_m1
--"-1"をスタックに積む
-iconst_<n>
--<n>には<0〜5>が入る
--<0〜5>をスタックに積む
-%%lconst_<n>%%
--longのため
-%%fconst_<n>%%
--floatのため
-%%dconst_<n>%%
--doubleのため
***スタックの編集 [#q1eba147]
-nop
--なにもしない
-pop
--スタックから値を取り出す
-pop2
--スタックから2つ値を取り出す
-dup
--スタックのトップをコピーして積む
-dup_x1
--スタックのトップをコピーして2つ下に積む
-dup_x2
--スタックのトップをコピーして3つ下に積む
-dup2
--スタックのトップとその下をコピーして積む
-dup2_x1
--スタックのトップとその下をコピーして2つ下に積む
-dup2_x2
--スタックのトップとその下をコピーして3つ下に積む
-swap
--スタックのトップとその下を入れ替える
**ローカル変数 [#e075bf3d]
***ローカル変数から取り出した値をスタックに積む [#q835e743]
-iload <index>
--ローカル変数に格納された値をstack上に積む。varnumはunsignedの16ビットでローカル変数のアドレス。
-iload_<n>
--<n>には<0〜5>が入る
--ローカル変数に格納された値をstack上に積む。どのローカル変数かは<0〜5>で指定。
-%%lload <index>%%
-%%lload_<n>%%
--longのため
-%%fload <index>%%
-%%fload_<n>%%
--floatのため
-%%dload <index>%%
-%%dload_<n>%%
--doubleのため
-%%aload <index>%%
-%%aload_<n>%%
--arrayのため
***スタックからpopした値をローカル変数に格納する [#p8b8fd85]
-istore <index>
--スタックのトップの値をローカル変数に格納する
-istore_<n>
--<n>には<0〜5>が入る
--スタックのトップの値をローカル変数に格納する
-%%lstore <index>%%
-%%lstore_<n>%%
--longのため
-%%fstore <index>%%
-%%fstore_<n>%%
--floatのため
-%%dstore <index>%%
-%%dstore_<n>%%
--doubleのため
-%%astore <index>%%
-%%astore_<n>%%
--arrayのため
***その他のローカル変数関連インストラクション [#ma44cebe]
-iinc <index> <constant>
--ローカル変数の値を<constant>分インクリメントする。ローカル変数は<index>により指定。
-wide
--indexのbit拡張
**配列 [#t9d7ec19]
***配列の生成 [#yaa394ef]
-%%newarray%%
-%%anewarray%%
-%%multianewarray%%
***配列から値を取り出す [#t462b6f0]
-%%iaload%%
-%%laload%%
-%%faload%%
-%%daload%%
-%%aaload%%
-%%baload%%
-%%caload%%
-%%saload%%
***配列に値を格納する [#w9ce047e]
-%%iastore%%
-%%lastore%%
-%%fastore%%
-%%dastore%%
-%%aastore%%
-%%bastore%%
-%%castore%%
-%%sastore%%
***その他の配列関連インストラクション [#ya878200]
-%%arraylength%%
**オブジェクト [#fd3c1d6b]
***オブジェクトの新規生成 [#kbe4d161]
-new
***フィールドへのアクセス [#d7cbd14d]
-putfield
-getfield
-putstatic
-getstatic
***その他のオブジェクト関連インストラクション [#g7a602dd]
-checkcast
-instanceof
*算術演算と型変換 [#g9e2d0e3]
**算術演算 [#sfeb5d10]
-iadd
--スタックから2つポップして加算しスタックに積む。
-%%ladd%%
-%%fadd%%
-%%dadd%%
-isub
--スタックから2つポップして減算しスタックに積む。
-%%lsub%%
-%%fsub%%
-%%dsub%%
-imul
--スタックから2つポップして乗算しスタックに積む。
-%%lmul%%
-%%fmul%%
-%%duml%%
-idiv
--スタックから2つポップして除算しスタックに積む。
-%%ldiv%%
-%%fdiv%%
-%%ddiv%%
-irem
--スタックから2つポップして除算し余りをスタックに積む。
-%%lrem%%
-%%frem%%
-%%drem%%
-ineg
--スタックから値を取り出し、反転させてスタックに積む。
-%%lneg%%
-%%fneg%%
-%%dneg%%
***論理演算 [#o9cf3f04]
-ishl
--スタックから2つポップしてトップを左シフトしスタックに積む。トップの下の値分だけ左シフト
-ishr
--スタックから2つポップしてトップを右シフトしスタックに積む。トップの下の値分だけ右シフト
-iushr
--スタックから2つポップしてトップを右シフトしスタックに積む。トップの下の値分だけ右シフト
-%%lshl%%
-%%lshr%%
-%%lushr%%
-iand
--スタックから2つポップして論理和をスタックに積む。
-%%land%%
-ior
--スタックから2つポップして論理積をスタックに積む。
-%%lor%%
-ixor
--スタックから2つポップして排他的論理和をスタックに積む。
-%%lxor%%
***型変換 [#zbb8c6b7]
-%%i2l%%
-%%i2f%%
-%%i2d%%
-%%l2i%%
-%%l2f%%
-%%l2d%%
-%%f2i%%
-%%f2l%%
-%%f2d%%
-%%d2i%%
-%%d2l%%
-%%d2f%%
-%%i2b%%
-%%i2c%%
-%%i2s%%
*フロー制御 [#r94fb774]
**実行制御を移す [#j55afc5e]
***条件分岐 [#k77fdb32]
-if<cond> <branchbtye1> <branchbyte2>
--ifeq
--ifne
--iflt
--ifge
--ifgt
--ifle
---スタックからポップしてそれを0と比較、その後に比較が正ならば指定されたアドレスへ移動
-if_icomp<cond>
--if_icmpeq
--if_icmpne
--if_icmplt
--if_icmpgt
--if_icmple
--if_icmpge
---スタックから2つポップしてそれらを比較、その後に比較が正ならば指定されたアドレスへ移動
-ifnull
--スタックからポップしてそれがnullならば指定されたアドレスへ移動
-ifnonnull
--スタックからポップしてそれがnullでなければ指定されたアドレスへ移動
***比較 [#b9fe539d]
-%%lcmp%%
-%%fcmpl%%
-%%fcmpg%%
-%%dcmpl%%
-%%dcmpg%%
***無条件分岐とサブルーチン [#m0e8037f]
-goto <branchbyte1> <branchbyte2>
--指定されたアドレスへジャンプ
-goto_w <branchbyte1> <branchbyte2> <3> <4>
--指定されたアドレスへジャンプ
-jsr <branchbyte1> <branchbyte2>
--指定されたサブルーチンへジャンプ
-jsr_w <branchbyte1> <branchbyte2> <3> <4>
--指定されたサブルーチンへジャンプ
-ret <index>
--サブルーチンから戻る
***テーブルジャンプ [#y3d1195e]
-lookupswitch
-tableswitch
**メソッド [#kb116aa1]
***メソッド呼び出し [#u5864550]
-invokevirtual
-invokespecial
-invokestatic
-invokeinterfave
***メソッドの終了と呼び出し元への復帰 [#j5fbc4ad]
-ireturn
-%%lreturn%%
-%%freturn%%
-%%dreturn%%
-%%areturn%%
-return
*その他 [#s159bec9]
**例外 [#haf0da12]
-athrow
**デバック [#t00c9fbb]
-breakpoint
**モニタ [#v8fdf22a]
-monitorenter
-monitorexit
ページ名: