Golang编程语言知识介绍


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

lua51 Instructions Commment

时间: 2021-07-01   |   分类: lua     |   阅读: 552 字 ~2分钟
typedef enum {
/*----------------------------------------------------------------------
name		args	description
------------------------------------------------------------------------*/
OP_MOVE,		/*	A B		R(A) := R(B)						*/
OP_LOADK,		/*	A Bx	R(A) := Kst(Bx)						*/
OP_LOADBOOL,		/*	A B C	R(A) := (Bool)B; if (C) pc++		*/
OP_LOADNIL,		/*	A B		R(A) := ... := R(B) := nil			*/
OP_GETUPVAL,		/*	A B		R(A) := UpValue[B]					*/

OP_GETGLOBAL,		/*	A Bx	R(A) := Gbl[Kst(Bx)]				*/
OP_GETTABLE,		/*	A B C	R(A) := R(B)[RK(C)]					*/

OP_SETGLOBAL,		/*	A Bx	Gbl[Kst(Bx)] := R(A)				*/
OP_SETUPVAL,		/*	A B		UpValue[B] := R(A)					*/
OP_SETTABLE,		/*	A B C	R(A)[RK(B)] := RK(C)				*/

OP_NEWTABLE,		/*	A B C	R(A) := {} (size = B,C)				*/

OP_SELF,		/*	A B C	R(A+1) := R(B); R(A) := R(B)[RK(C)]	*/

OP_ADD,			/*	A B C	R(A) := RK(B) + RK(C)				*/
OP_SUB,			/*	A B C	R(A) := RK(B) - RK(C)				*/
OP_MUL,			/*	A B C	R(A) := RK(B) * RK(C)				*/
OP_DIV,			/*	A B C	R(A) := RK(B) / RK(C)				*/
OP_MOD,			/*	A B C	R(A) := RK(B) % RK(C)				*/
OP_POW,			/*	A B C	R(A) := RK(B) ^ RK(C)				*/
OP_UNM,			/*	A B		R(A) := -R(B)						*/
OP_NOT,			/*	A B		R(A) := not R(B)					*/
OP_LEN,			/*	A B		R(A) := length of R(B)				*/

OP_CONCAT,		/*	A B C	R(A) := R(B).. ... ..R(C)			*/

OP_JMP,			/*	sBx		pc+=sBx								*/

OP_EQ,			/*	A B C	if ((RK(B) == RK(C)) ~= A) then pc++*/
OP_LT,			/*	A B C	if ((RK(B) <  RK(C)) ~= A) then pc++*/
OP_LE,			/*	A B C	if ((RK(B) <= RK(C)) ~= A) then pc++*/

/* !!!! <=>:用bool值做相等性比较,而不是判断不相等 */
OP_TEST,		/*	A C		if not (R(A) <=> C) then pc++		*/ 
OP_TESTSET,		/*	A B C	if (R(B) <=> C) then R(A) := R(B) else pc++	*/ 

/* 
** B=1表示没有传入参数,2:传入一个参数,0:传入了不定参数 
** C=1:期待没有返回值,2:期待一个返回值,0:期待不定数量返回值
*/
OP_CALL,		/*	A B C	R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */

OP_TAILCALL,		/*	A B C	return R(A)(R(A+1), ... ,R(A+B-1))		*/

/* B=1:无返回值,2:一个返回值,0:不定数量返回值 */
OP_RETURN,		/*	A B		return R(A), ... ,R(A+B-2)	(see note)	*/

OP_FORLOOP,		/*	A sBx	R(A)+=R(A+2);
								if R(A) <?= R(A+1) then { pc+=sBx; R(A+3)=R(A) }*/
OP_FORPREP,		/*	A sBx	R(A)-=R(A+2); pc+=sBx				*/

OP_TFORLOOP,		/*	A C	R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); 
                        		if R(A+3) ~= nil then R(A+2)=R(A+3) else pc++	*/ 
OP_SETLIST,		/*	A B C	R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B	*/

OP_CLOSE,		/*	A 		close all variables in the stack up to (>=) R(A)*/
OP_CLOSURE,		/*	A Bx	R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n))	*/

OP_VARARG		/*	A B		R(A), R(A+1), ..., R(A+B-1) = vararg		*/
} OpCode;
#lua#
亿级系统的Redis缓存如何设计???
哈希表
shankusu2017@gmail.com

shankusu2017@gmail.com

日志
分类
标签
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%