uvm assembly lanugage reference

uvm assembly language是uvm的伪汇编语言,可以用来生成uvm字节码,较uvm字节码更可读和维护。uvm上部分编程语言是先编译生成uvm assembly然后再生成uvm字节码的

Features

  .begin_const
     "asd"
     "Hello"
     " world!"
  .end_const
  .begin_upvalue
     1 0
  .end_upvalue
.begin_code
   loadk %0 const "asd"    ;L12;  %0表示slot 0
   closure %1 subroutine_2
   move %2 %1
   loadk %3 const "Hello"
   loadk %4 const " world!"
   call %2 3 1
   return %0 1
.end_code

指令列表


  MOVE Copy a value between registers
  LOADK 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
  GETTABLE Read a table element into a register
  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
  DIV Division operator
  MOD Modulus (remainder) operator
  POW Exponentiation operator
  UNM Unary minus operator
  NOT Logical NOT operator
  LEN Length operator
  CONCAT Concatenate a range of registers
  JMP Unconditional jump
  EQ Equality test
  LT Less than test
  LE Less than or equal to test
  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
  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