Lua LuaJit 指令表(整理)

何星鹏
2023-12-01

** +----+----+----+----+
** | B  | C  | A  | OP | Format ABC
** +----+----+----+----+
** |    D    | A  | OP | Format AD
** +--------------------
** MSB               LSB


OPOPAD(B-C)Description
00ISLTvarvarJump if A < D
01ISGEvarvarJump if A ≥ D
02ISLEvarvarJump if A ≤ D
03ISGTvarvarJump if A > D
04ISEQVvarvarJump if A = D
05ISNEVvarvarJump if A ≠ D
06ISEQSvarstrJump if A = D
07ISNESvarstrJump if A ≠ D
08ISEQNvarnumJump if A = D
09ISNENvarnumJump if A ≠ D
0AISEQPvarpriJump if A = D
0BISNEPvarpriJump if A ≠ D
0CISTCdstvarCopy D to A and jump, if D is true
0DISFCdstvarCopy D to A and jump, if D is false
0EIST varJump if D is true
0FISF varJump if D is false
10MOVdstvarCopy D to A
11NOTdstvarSet A to boolean not of D
12UNMdstvarSet A to -D (unary minus)
13LENdstvarSet A to #D (object length)
14ADDVNdstvarnumA = B + C
15SUBVNdstvarnumA = B - C
16MULVNdstvarnumA = B * C
17DIVVNdstvarnumA = B / C
18MODVNdstvarnumA = B % C
19ADDNVdstvarnumA = C + B
1ASUBNVdstvarnumA = C - B
1BMULNVdstvarnumA = C * B
1CDIVNVdstvarnumA = C / B
1DMODNVdstvarnumA = C % B
1EADDVVdstvarvarA = B + C
1FSUBVVdstvarvarA = B - C
20MULVVdstvarvarA = B * C
21DIVVVdstvarvarA = B / C
22MODVVdstvarvarA = B % C
23POWdstvarvarA = B ^ C
24CATdstrbaserbaseA = B .. ~ .. C
25KSTRdststrSet A to string constant D
26KCDATAdstcdataSet A to cdata constant D
27KSHORTdstlitsSet A to 16 bit signed integer D
28KNUMdstnumSet A to number constant D
29KPRIdstpriSet A to primitive D
2AKNILbasebaseSet slots A to D to nil
2BUGETdstuvSet A to upvalue D
2CUSETVuvvarSet upvalue A to D
2DUSETSuvstrSet upvalue A to string constant D
2EUSETNuvnumSet upvalue A to number constant D
2FUSETPuvpriSet upvalue A to primitive D
30UCLOrbasejumpClose upvalues for slots ≥ rbase and jump to target D
31FNEWdstfuncCreate new closure from prototype D and store it in A
32TNEWdst litSet A to new table with size D (see below)
33TDUPdst tabSet A to duplicated template table D
34GGETdst strA = _G[D]
35GSETvar str_G[D] = A
36TGETVdstvarvarA = B[C]
37TGETSdstvarstrA = B[C]
38TGETBdstvarlitA = B[C]
39TSETVvarvarvarB[C] = A
3ATSETSvarvarstrB[C] = A
3BTSETBvarvarlitB[C] = A
3CTSETMbase num*(A-1)[D], (A-1)[D+1], ... = A, A+1, ...
3DCALLMbaselitlitCall: A, ..., A+B-2 = A(A+1, ..., A+C+MULTRES)
3ECALLbaselitlitCall: A, ..., A+B-2 = A(A+1, ..., A+C-1)
3FCALLMTbase litTailcall: return A(A+1, ..., A+D+MULTRES)
40CALLTbase litTailcall: return A(A+1, ..., A+D-1)
41ITERCbaselitlitCall iterator: A, A+1, A+2 = A-3, A-2, A-1; A, ..., A+B-2 = A(A+1, A+2)
42ITERNbaselitlitSpecialized ITERC, if iterator function A-3 is next()
43VARGbaselitlitVararg: A, ..., A+B-2 = ...
44ISNEXTbase jumpVerify ITERN specialization and jump
45RETMbaselitreturn A, ..., A+D+MULTRES-1
46RETrbaselitreturn A, ..., A+D-2
47RET0rbaselitreturn
48RET1rbaselitreturn A
49FORIbasejumpNumeric 'for' loop init
4AJFORIbasejumpNumeric 'for' loop init, JIT-compiled
4BFORLbasejumpNumeric 'for' loop
4CIFORLbasejumpNumeric 'for' loop, force interpreter
4DJFORLbaselitNumeric 'for' loop, JIT-compiled
4EITERLbasejumpIterator 'for' loop
4FIITERLbasejumpIterator 'for' loop, force interpreter
50JITERLbaselitIterator 'for' loop, JIT-compiled
51LOOPrbasejumpGeneric loop
52ILOOPrbasejumpGeneric loop, force interpreter
53JLOOPrbaselitGeneric loop, JIT-compiled
54JMPrbasejumpJump (Author-Yofoo)
55FUNCFrbase Fixed-arg Lua function
56IFUNCFrbase Fixed-arg Lua function, force interpreter
57JFUNCFrbaselitFixed-arg Lua function, JIT-compiled
58FUNCVrbase Vararg Lua function
59IFUNCVrbase Vararg Lua function, force interpreter
5AJFUNCVrbaselitVararg Lua function, JIT-compiled
5BFUNCCrbase Pseudo-header for C functions
5CFUNCCWrbase Pseudo-header for wrapped C functions

 类似资料: