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
  • 相关阅读:
    NSURLSessionDataDelegate 文件下载
    NSURLConnection 大文件下载
    全屏滑动
    qq粒子效果
    iOS 技巧
    iOS 15 新特性适配
    iOS 字符串转json 字符串转数组
    iOS 微信分享显示未验证应用2
    iOS 微信分享显示未验证应用1
    iOS 隐藏系统音量提示框
  • 原文地址:https://www.cnblogs.com/jiftle/p/15677183.html
Copyright © 2011-2022 走看看