一點JVM位元組碼指令介紹
阿新 • • 發佈:2021-07-10
Java虛擬機器的指令由一個位元組長度的、代表著某種特定操作含義的數字(操作碼)以及跟隨其後的零至多個代表此操作所需引數(運算元)構成。位元組碼指令集是一種具有鮮明特點、優劣勢都很突出的指令集架構,由於限制了Java虛擬機器操作碼的長度為一個位元組,所以指令集的操作碼總數不可能超過256條。
載入和儲存指令
-
將一個區域性變數載入到操作棧
iload、iload_<n>、lload、lload_<n>、fload、fload_<n>、dload、dload_<n>、aload、aload_<n>
-
將一個數值從運算元棧儲存到區域性變量表
fstore、fstore_<n>、dstore、dstore_<n>、astore、astore_<n>、istore、istore_<n>、lstore、lstore_<n>
-
將一個常量載入到運算元棧
bipush、sipush、ldc、ldc_w、ldc2_w、aconst_null、iconst_ml、iconst_<i>、lconst_<l>、fconst_<f>、dconst_<d>
-
擴充區域性變量表的訪問索引的指令
wide
運算指令
-
加法指令
iadd、ladd、fadd、dadd
-
減法指令
isub、lsub、fsub、dsub
-
乘法指令
imul、lmul、fmul、dmul
-
除法指令
idiv、ldiv、fdiv、ddiv
-
求餘指令
irem、lrem、frem、drem
-
取反指令
ineg、lneg、fneg、dneg
-
位移指令
ishl、ishr、iushr、lshl、lshe、lushr
-
按位或指令
ior、lor
-
按位與指令
iand、land
-
按位異或指令
ixor、lxor
-
區域性變數自增指令
iinc
-
比較指令
dcmpg、dcmpl、fcmpg、fcmpl、lcmp