zoukankan      html  css  js  c++  java
  • lua 5.3 字节码指令手册

    原文

    寄存器

    Instruction Notation

    R(A)
    Register A (specified in instruction field A)
    R(B)
    Register B (specified in instruction field B)
    R(C)
    Register C (specified in instruction field C)
    PC
    Program Counter
    Kst(n)
    Element n in the constant list
    Upvalue[n]
    Name of upvalue with index n
    Gbl[sym]
    Global variable indexed by symbol sym
    RK(B)
    Register B or a constant index
    RK(C)
    Register C or a constant index
    sBx
    Signed displacement (in field sBx) for all kinds of jumps

    Instruction Summary

    Lua bytecode instructions are 32-bits in size. All instructions have an opcode in the first 6 bits. Instructions can have the following fields:

    'A' : 8 bits
    'B' : 9 bits
    'C' : 9 bits
    'Ax' : 26 bits ('A', 'B', and 'C' together)
    'Bx' : 18 bits ('B' and 'C' together)
    'sBx' : signed Bx

    A signed argument is represented in excess K; that is, the number value is the unsigned value minus K. K is exactly the maximum value for that argument (so that -max is represented by 0, and +max is represented by 2*max), which is half the maximum for the corresponding unsigned argument.

    操作码

    Opcode Description
    MOVE Copy a value between registers
    LOADK Load a constant into a register
    LOADKX Load a constant into a register
    LOADBOOL Load a boolean into a register
    LOADNIL Load nil values into a range of registers
    GETUPVAL Read an upvalue into a register
    GETTABUP Read a value from table in up-value into a register
    GETTABLE Read a table element into a register
    SETTABUP Write a register value into table in up-value
    SETUPVAL Write a register value into an upvalue
    SETTABLE Write a register value into a table element
    NEWTABLE Create a new table
    SELF Prepare an object method for calling
    ADD Addition operator
    SUB Subtraction operator
    MUL Multiplication operator
    MOD Modulus (remainder) operator
    POW Exponentation operator
    DIV Division operator
    IDIV Integer division operator
    BAND Bit-wise AND operator
    BOR Bit-wise OR operator
    BXOR Bit-wise Exclusive OR operator
    SHL Shift bits left
    SHR Shift bits right
    UNM Unary minus
    BNOT Bit-wise NOT operator
    NOT Logical NOT operator
    LEN Length operator
    CONCAT Concatenate a range of registers
    JMP Unconditional jump
    EQ Equality test, with conditional jump
    LT Less than test, with conditional jump
    LE Less than or equal to test, with conditional jump
    TEST Boolean test, with conditional jump
    TESTSET Boolean test, with conditional jump and assignment
    CALL Call a closure
    TAILCALL Perform a tail call
    RETURN Return from function call
    FORLOOP Iterate a numeric for loop
    FORPREP Initialization for a numeric for loop
    TFORLOOP Iterate a generic for loop
    TFORCALL Initialization for a generic for loop
    SETLIST Set a range of array elements for a table
    CLOSURE Create a closure of a function prototype
    VARARG Assign vararg function arguments to registers
  • 相关阅读:
    JVM学习记录-垃圾收集器
    JVM学习记录-垃圾回收算法
    Java设计模式学习记录-策略模式
    【转】Java方向如何准备技术面试答案(汇总版)
    Java设计模式学习记录-代理模式
    JVM之ParNew收集器
    JVM之CMS收集器
    动态代理:cgib、jdk、java javassist
    JVM之Class文件结构
    JAVA之直接内存(DirectMemory)
  • 原文地址:https://www.cnblogs.com/jiftle/p/15677183.html
Copyright © 2011-2022 走看看