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
  • 相关阅读:
    C# 实现简单打印(二)打印一个文本文档,打印的内容是多行的
    用户管理:登录窗体通过ShowDialog()方法实现切换
    SQL 定义与使用数据库及表 实例_(学生,课程表,选修表)
    temp0305
    计算机硬件通用功能类:硬件信息控制器(主机名,cpu编号,网卡地址,MAC地址,主硬盘编号,ip地址,获取最大线程数,验证服务IP)
    socket编程:简单的TCP服务器
    从输入的邮箱地址中提取用户名
    C#基础:helloWord book 实例小集合
    怎么样datatable表中增加一行合计行?
    C#基础:多态:基类可以定义并实现虚(virtual)方法,派生类可以重写(override)这些方法
  • 原文地址:https://www.cnblogs.com/jiftle/p/15677183.html
Copyright © 2011-2022 走看看