您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CREATE_ABC函数代码示例

51自学网 2021-06-01 20:05:25
  C++
这篇教程C++ CREATE_ABC函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CREATE_ABC函数的典型用法代码示例。如果您正苦于以下问题:C++ CREATE_ABC函数的具体用法?C++ CREATE_ABC怎么用?C++ CREATE_ABC使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CREATE_ABC函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: combine

static const Proto* combine(lua_State* L, int n){ if (n==1)  return toproto(L,-1); else {  int i,pc;  Proto* f=luaF_newproto(L);  setptvalue2s(L,L->top,f); incr_top(L);  f->source=luaS_newliteral(L,"=(" PROGNAME ")");  f->maxstacksize=1;  pc=2*n+1;  f->code=luaM_newvector(L,pc,Instruction);  f->sizecode=pc;  f->p=luaM_newvector(L,n,Proto*);  f->sizep=n;  pc=0;  for (i=0; i<n; i++)  {   f->p[i]=toproto(L,i-n-1);   f->code[pc++]=CREATE_ABx(OP_CLOSURE,0,i);   f->code[pc++]=CREATE_ABC(OP_CALL,0,1,1);  }  f->code[pc++]=CREATE_ABC(OP_RETURN,0,1,0);  return f; }}
开发者ID:gamedevforks,项目名称:mariachi,代码行数:27,


示例2: combine

static Proto* combine(lua_State* L, int n){	if (n==1)	{		const Closure* c=(const Closure*)lua_topointer(L,-1);		return c->l.p;	}	else	{		int i,pc=0;		Proto* f=luaF_newproto(L);		f->source=luaS_newliteral(L,"=(none)");		f->maxstacksize=1;		f->p=luaM_newvector(L,n,Proto*);		f->sizep=n;		f->sizecode=2*n+1;		f->code=luaM_newvector(L,f->sizecode,Instruction);		for (i=0; i<n; i++)		{			const Closure* c=(const Closure*)lua_topointer(L,i-n);			f->p[i]=c->l.p;			f->code[pc++]=CREATE_ABx(OP_CLOSURE,0,i);			f->code[pc++]=CREATE_ABC(OP_CALL,0,1,1);		}		f->code[pc++]=CREATE_ABC(OP_RETURN,0,1,0);		return f;	}}
开发者ID:anissen,项目名称:WikiAdventure,代码行数:28,


示例3: lua_combine

static int lua_combine( lua_State* L) {  int n = lua_gettop( L); /* Number of functions to combine */  if( 1 == n) {    return 1; /* Only one function, nothing to combine */  } else {      int i, pc = 3*n + 1;      Proto* f = luaF_newproto( L);      setptvalue2s( L,L->top,f);       incr_top( L);      f->source       = luaS_newliteral( L,"=(combiner)");      f->maxstacksize = 2;      f->is_vararg    = VARARG_ISVARARG;      f->code         = luaM_newvector(L, pc, Instruction);      f->sizecode     = pc;      f->p            = luaM_newvector( L, n, Proto*);      f->sizep        = n;      for( i = pc = 0; i < n; i ++) {        int proto_idx = i-n-1;        Proto *p      = clvalue( L->top + proto_idx)->l.p;        f->p[i]       = p;        f->code[pc++] = CREATE_ABx( OP_CLOSURE, 0, i);        f->code[pc++] = CREATE_ABx( OP_VARARG,  1, 0);        f->code[pc++] = CREATE_ABC( OP_CALL,    0, 0, 1);      }      f->code[pc++]   = CREATE_ABC( OP_RETURN, 0, 1, 0);      return 1;    }}
开发者ID:FuzzyPurp,项目名称:metalua-computercraft,代码行数:28,


示例4: luaK_codeABC

/*** Format and emit an 'iABC' instruction. (Assertions check consistency** of parameters versus opcode.)*/int luaK_codeABC (FuncState *fs, OpCode o, int a, int b, int c) {  lua_assert(getOpMode(o) == iABC);  lua_assert(getBMode(o) != OpArgN || b == 0);  lua_assert(getCMode(o) != OpArgN || c == 0);  lua_assert(a <= MAXARG_A && b <= MAXARG_B && c <= MAXARG_C);  return luaK_code(fs, CREATE_ABC(o, a, b, c));}
开发者ID:celskeggs,项目名称:selkie,代码行数:11,


示例5: codegen_codeABC

int codegen_codeABC(ktap_funcstate *fs, OpCode o, int a, int b, int c){	ktap_assert(getOpMode(o) == iABC);	//ktap_assert(getBMode(o) != OpArgN || b == 0);	//ktap_assert(getCMode(o) != OpArgN || c == 0);	//ktap_assert(a <= MAXARG_A && b <= MAXARG_B && c <= MAXARG_C);	return codegen_code(fs, CREATE_ABC(o, a, b, c));}
开发者ID:unixbhaskar,项目名称:ktap,代码行数:8,


示例6: patchtestreg

static int patchtestreg (FuncState *fs, int node, int reg) {  Instruction *i = getjumpcontrol(fs, node);  if (GET_OPCODE(*i) != OP_TESTSET)    return 0;  /* cannot patch other instructions */  if (reg != NO_REG && reg != GETARG_B(*i))    SETARG_A(*i, reg);  else  /* no register to put value or register already has the value */    *i = CREATE_ABC(OP_TEST, GETARG_B(*i), 0, GETARG_C(*i));  return 1;}
开发者ID:Badcreature,项目名称:caffeine-hx,代码行数:11,


示例7: combine

static Proto* combine(lua_State* L, int n){	if (n==1) {		int i;		Proto* f = toproto(L,-1); 		if (LDS2) {		  Inject(f,0);		  for (i=0; i<f->sizep; i++) {		  	Inject(f->p[i],i+1);		  }  	}		return f;	} else {  int i,pc=0;  Proto* f=luaF_newproto(L);  f->source=luaS_newliteral(L,"=(" PROGNAME ")");  f->maxstacksize=1;  f->p=luaM_newvector(L,n,Proto*);  f->sizep=n;  f->sizecode=2*n+1;  f->code=luaM_newvector(L,f->sizecode,Instruction);  for (i=0; i<n; i++)  {   f->p[i]=toproto(L,i-n);   f->code[pc++]=CREATE_ABx(HKS_OPCODE_CLOSURE,0,i);   f->code[pc++]=CREATE_ABC(HKS_OPCODE_CALL,0,1,1);  }  f->code[pc++]=CREATE_ABC(HKS_OPCODE_RETURN,0,1,0);	if (LDS2) {		Inject(f,0);		for (i=0; i<n; i++) {			Inject(f->p[i],i+1);		}	}  return f; }}
开发者ID:pareshchouhan,项目名称:HKSDecompiler,代码行数:39,


示例8: patchtestreg

/* Patch register of test instructions. */static int patchtestreg (FuncState *fs, int node, int reg) {  Instruction *i = getjumpcontrol(fs, node);  if (GET_OPCODE(*i) != OP_TESTSET)    return 0;  /* cannot patch other instructions */  if (reg != NO_REG && reg != GETARG_B(*i)) {    SETARG_A(*i, reg);    DEBUG_CODEGEN(raviY_printf(fs, "[?]* %o ; set A to %d/n", *i, reg));  }  else  /* no register to put value or register already has the value */ {    *i = CREATE_ABC(OP_TEST, GETARG_B(*i), 0, GETARG_C(*i));    DEBUG_CODEGEN(raviY_printf(fs, "[?]* %o ; generate OP_TEST/n", *i));  }  return 1;}
开发者ID:galek,项目名称:ravi,代码行数:16,


示例9: luaF_newproto

static Proto *makefakeproto(lua_State *L, lu_byte nups) {	Proto *p = luaF_newproto(L);	p->sizelineinfo = 1;	p->lineinfo = luaM_newvector(L, 1, int);	p->lineinfo[0] = 1;	p->sizecode = 1;	p->code = luaM_newvector(L, 1, Instruction);	p->code[0] = CREATE_ABC(OP_RETURN, 0, 1, 0);	p->source = luaS_newlstr(L, "", 0);	p->maxstacksize = 2;	p->nups = nups;	p->sizek = 0;	p->sizep = 0;	return p;}
开发者ID:CeRiAl,项目名称:DreamZZT,代码行数:16,


示例10: createProto

Proto *makeFakeProto(lua_State *L, lu_byte nups) {	Proto *p = createProto(L);	p->sizelineinfo = 1;	p->lineinfo = lua_newVector(L, 1, int);	p->lineinfo[0] = 1;	p->sizecode = 1;	p->code = lua_newVector(L, 1, Instruction);	p->code[0] = CREATE_ABC(OP_RETURN, 0, 1, 0);	p->source = createString(L, "", 0);	p->maxstacksize = 2;	p->nups = nups;	p->sizek = 0;	p->sizep = 0;	return p;}
开发者ID:AlbanBedel,项目名称:scummvm,代码行数:17,


示例11: unpersistproto

static void unpersistproto(int ref, UnpersistInfo *upi) {	/* perms reftbl ... */	Proto *p;	int i;	int sizep, sizek;	/* We have to be careful. The GC expects a lot out of protos. In	 * particular, we need to give the function a valid string for its	 * source, and valid code, even before we actually read in the real	 * code. */	TString *source = luaS_newlstr(upi->L, "", 0);	p = luaF_newproto(upi->L);	p->source = source;	p->sizecode=1;	p->code = luaM_newvector(upi->L, 1, Instruction);	p->code[0] = CREATE_ABC(OP_RETURN, 0, 1, 0);	p->maxstacksize = 2;	p->sizek = 0;	p->sizep = 0;	pushproto(upi->L, p);	/* perms reftbl ... proto */	/* We don't need to register early, since protos can never ever be	 * involved in cyclic references */	/* Read in constant references */	{		verify(luaZ_read(&upi->zio, &sizek, sizeof(int)) == 0);		luaM_reallocvector(upi->L, p->k, 0, sizek, TObject);		for(i=0; i<sizek; i++) {			/* perms reftbl ... proto */			unpersist(upi);			/* perms reftbl ... proto k */			setobj2s(&p->k[i], getobject(upi->L, -1));			p->sizek++;			lua_pop(upi->L, 1);			/* perms reftbl ... proto */		}		/* perms reftbl ... proto */	}	/* Read in sub-proto references */	{		verify(luaZ_read(&upi->zio, &sizep, sizeof(int)) == 0);		luaM_reallocvector(upi->L, p->p, 0, sizep, Proto*);		for(i=0; i<sizep; i++) {			/* perms reftbl ... proto */			unpersist(upi);			/* perms reftbl ... proto subproto */			p->p[i] = toproto(upi->L, -1);			p->sizep++;			lua_pop(upi->L, 1);			/* perms reftbl ... proto */		}		/* perms reftbl ... proto */	}	/* Read in code */	{		verify(luaZ_read(&upi->zio, &p->sizecode, sizeof(int)) == 0);		luaM_reallocvector(upi->L, p->code, 1, p->sizecode, Instruction);		verify(luaZ_read(&upi->zio, p->code,		                 sizeof(Instruction) * p->sizecode) == 0);	}	/* Read in misc values */	{		verify(luaZ_read(&upi->zio, &p->nups, sizeof(lu_byte)) == 0);		verify(luaZ_read(&upi->zio, &p->numparams, sizeof(lu_byte)) == 0);		verify(luaZ_read(&upi->zio, &p->is_vararg, sizeof(lu_byte)) == 0);		verify(luaZ_read(&upi->zio, &p->maxstacksize, sizeof(lu_byte)) == 0);	}}
开发者ID:CeRiAl,项目名称:DreamZZT,代码行数:73,


示例12: combine

static Proto* combine(lua_State* L, int scripts) {  if (scripts==1 && preloads==0)    return toproto(L,-1);  else {    TString *s;    TValue *k;    int i,pc,n;    Proto* f=luaF_newproto(L);    setptvalue2s(L,L->top,f); incr_top(L);    f->source=luaS_newliteral(L,"=(" PROGNAME ")");    f->maxstacksize=1;    pc=(2*scripts) + 1;    if(preloads > 0) {      pc+=(2*preloads) + 2;    }    f->code=luaM_newvector(L,pc,Instruction);    f->sizecode=pc;    n=(scripts + preloads);    f->p=luaM_newvector(L,n,Proto*);    f->sizep=n;    pc=0;    n=0;    /* preload libraries. */    if (preloads > 0) {      /* create constants array. */      f->k=luaM_newvector(L, (preloads + 2),TValue);      f->sizek=(preloads + 2);      /* make room for "local t" variable. */      f->maxstacksize=2;      /* add "package" & "preload" constants. */      k=&(f->k[0]);      s=luaS_newliteral(L, "package");      setsvalue2n(L,k,s);      k=&(f->k[1]);      s=luaS_newliteral(L, "preload");      setsvalue2n(L,k,s);      /* code: local t = package.preload */      f->code[pc++]=CREATE_ABx(OP_GETGLOBAL,0,0);      f->code[pc++]=CREATE_ABC(OP_GETTABLE,0,0,RKASK(1));    }    /* add preload libraries to "package.preload" */    for (i=0; i < preloads; i++) {      /* create constant for library name. */      k=&(f->k[i+2]);      s=luaS_new(L, preload_libs[i]);      setsvalue2n(L,k,s);      /* code: t['name'] = function() --[[ lib code ]] end */      f->code[pc++]=CREATE_ABx(OP_CLOSURE,1,n);      f->code[pc++]=CREATE_ABC(OP_SETTABLE,0,RKASK(i+2),1);      f->p[n++]=toproto(L,i-preloads-1);    }    /* call scripts. */    for (i=0; i < scripts; i++) {      /* code: (function() --[[ script code ]] end)() */      f->code[pc++]=CREATE_ABx(OP_CLOSURE,0,n);      f->code[pc++]=CREATE_ABC(OP_CALL,0,1,1);      f->p[n++]=toproto(L,i-scripts-1-preloads);    }    f->code[pc++]=CREATE_ABC(OP_RETURN,0,1,0);    return f;  }}
开发者ID:NaughtyCode,项目名称:slua,代码行数:62,


示例13: patchtestreg

static void patchtestreg (Instruction *i, int reg) {  if (reg != NO_REG)    SETARG_A(*i, reg);  else  /* no register to put value; change TESTSET to TEST */    *i = CREATE_ABC(OP_TEST, GETARG_B(*i), 0, GETARG_C(*i));}
开发者ID:OLR-xray,项目名称:XRay-NEW,代码行数:6,


示例14: combine

/* * If the luac command line includes multiple files or has the -f option  * then luac generates a main function to reference all sub-main prototypes. * This is one of two types: *   Type 0   The standard luac combination main *   Type 1   A lookup wrapper that facilitates indexing into the generated protos  */static const Proto* combine(lua_State* L, int n, int type){ if (n==1 && type == 0)  return toproto(L,-1); else {  int i;  Instruction *pc;  Proto* f=luaF_newproto(L);  setptvalue2s(L,L->top,f); incr_top(L);  f->source=luaS_newliteral(L,"=(" PROGNAME ")");  f->p=luaM_newvector(L,n,Proto*);  f->sizep=n;  for (i=0; i<n; i++)     f->p[i]=toproto(L,i-n-1);  pc=0;  if (type == 0) {  /*   * Type 0 is as per the standard luac, which is just a main routine which    * invokes all of the compiled functions sequentially.  This is fine if    * they are self registering modules, but useless otherwise.   */   f->numparams    = 0;   f->maxstacksize = 1;   f->sizecode     = 2*n + 1 ;   f->sizek        = 0;   f->code         = luaM_newvector(L, f->sizecode , Instruction);   f->k            = luaM_newvector(L,f->sizek,TValue);   for (i=0, pc = f->code; i<n; i++) {    *pc++ = CREATE_ABx(OP_CLOSURE,0,i);    *pc++ = CREATE_ABC(OP_CALL,0,1,1);   }   *pc++ = CREATE_ABC(OP_RETURN,0,1,0);  } else {  /*   * The Type 1 main() is a lookup which takes a single argument, the name to     * be resolved. If this matches root name of one of the compiled files then   * a closure to this file main is returned.  Otherwise the Unixtime of the   * compile and the list of root names is returned.   */   if (n > LFIELDS_PER_FLUSH) {#define NO_MOD_ERR_(n) ": Number of modules > " #n#define NO_MOD_ERR(n) NO_MOD_ERR_(n)    usage(LUA_QL("-f")  NO_MOD_ERR(LFIELDS_PER_FLUSH));   }   f->numparams    = 1;   f->maxstacksize = n + 3;   f->sizecode     = 5*n + 5 ;   f->sizek        = n + 1;   f->sizelocvars  = 0;   f->code         = luaM_newvector(L, f->sizecode , Instruction);   f->k            = luaM_newvector(L,f->sizek,TValue);   for (i=0, pc = f->code; i<n; i++)     {    /* if arg1 == FnameA then return function (...) -- funcA -- end end */    setsvalue2n(L,f->k+i,corename(L, f->p[i]->source));    *pc++ = CREATE_ABC(OP_EQ,0,0,RKASK(i));     *pc++ = CREATE_ABx(OP_JMP,0,MAXARG_sBx+2);    *pc++ = CREATE_ABx(OP_CLOSURE,1,i);    *pc++ = CREATE_ABC(OP_RETURN,1,2,0);   }   setnvalue(f->k+n, (lua_Number) time(NULL));   *pc++ = CREATE_ABx(OP_LOADK,1,n);   *pc++ = CREATE_ABC(OP_NEWTABLE,2,luaO_int2fb(i),0);      for (i=0; i<n; i++)      *pc++ = CREATE_ABx(OP_LOADK,i+3,i);   *pc++ = CREATE_ABC(OP_SETLIST,2,i,1);      *pc++ = CREATE_ABC(OP_RETURN,1,3,0);   *pc++ = CREATE_ABC(OP_RETURN,0,1,0);  }  lua_assert((pc-f->code) == f->sizecode);  return f; }}
开发者ID:NicolSpies,项目名称:nodemcu-firmware,代码行数:86,



注:本文中的CREATE_ABC函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ CREATE_VECTOR1函数代码示例
C++ CREATE函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。