亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ljit_x86.dasc

?? lua的即時編譯器。支持lua 5.1.2版本
?? DASC
?? 第 1 頁 / 共 5 頁
字號:
    |  mov L->top, TOP  }  /* Otherwise keep TOP for next instruction. */}static void jit_op_tailcall(jit_State *J, int func, int nargs){  int cltype;  if (!fhint_isset(J, NOCLOSE)) {  /* May need to close open upvalues. */    |  call &luaF_close, L, BASE  }  cltype = jit_inline_call(J, func, nargs, -2);  if (cltype < 0) goto finish;  /* Inlined? */  if (cltype == LUA_TFUNCTION) {    jit_deopt_target(J, nargs);    |  isfunction func    |  jne L_DEOPTIMIZE			// TYPE hint was wrong?  } else {    |  isfunction func; jne >5		// Handle generic callables first.    |.tail    |5:  // Fallback for generic callables.    |  addidx BASE, func    if (nargs >= 0) {      |  lea TOP, BASE[1+nargs]    }    |  mov edx, &J->nextins    |  jmp ->METATAILCALL    |.code    |.jsub METATAILCALL			// TAILCALL to __call metamethod.    |  mov L->savedpc, edx    |  mov L->top, TOP    |  call &luaD_tryfuncTM, L, BASE	// Resolve __call metamethod.    |    |// Relocate [eax, L->top) -> [L->ci->func, *).    |  mov CI, L->ci    |  mov edx, L->top    |  mov TOP, CI->func    |1:    |  mov BASE, [eax]    |  add eax, aword*1    |  mov [TOP], BASE    |  add TOP, aword*1    |  cmp eax, edx    |  jb <1    |    |  mov BASE, CI->func    |  mov LCL, BASE->value    |  sub CI, #CI    |  add esp, FRAME_OFFSET    |  jmp aword LCL->jit_gate		// Chain to callgate.    |.endjsub  }  if (nargs >= 0) {  /* Previous op was not open and did not set TOP. */    int i;    /* Relocate [BASE+func, BASE+func+nargs] -> [ci->func, ci->func+nargs]. */    /* TODO: loop for large nargs? */    if (!J->pt->is_vararg) {  /* Fixarg function. */      |  mov LCL, BASE[func].value      for (i = 0; i < nargs; i++) {	|  copyslot BASE[i], BASE[func+1+i], ecx, edx      }      |  lea TOP, BASE[nargs]      |   sub BASE, #BASE      |  mov CI, L->ci      |  mov BASE->value, LCL		// Sufficient to copy func->value.    } else {  /* Vararg function. */      |   mov CI, L->ci      |  lea TOP, BASE[func]      |   mov BASE, CI->func      |  mov LCL, TOP->value      |  mov BASE->value, LCL		// Sufficient to copy func->value.      for (i = 0; i < nargs; i++) {	|  copyslot BASE[i+1], TOP[i+1], eax, edx      }      |  lea TOP, BASE[1+nargs]      |  mov LCL, BASE->value		// Need to reload LCL = eax.    }  } else {  /* Previous op was open and set TOP. */    |// Relocate [BASE+func, TOP) -> [ci->func, *).    |  mov CI, L->ci    |  addidx BASE, func    |  mov edx, CI->func    |1:    |  mov eax, [BASE]    |  add BASE, aword*1    |  mov [edx], eax    |  add edx, aword*1    |  cmp BASE, TOP    |  jb <1    |  mov BASE, CI->func    |  mov TOP, edx			// Relocated TOP.    |  mov LCL, BASE->value  }  |  sub CI, #CI  |  add esp, FRAME_OFFSET  |  jmp aword LCL->jit_gate		// Chain to JIT function.finish:  J->combine++;  /* Combine with following return instruction. */}/* ------------------------------------------------------------------------ */static void jit_op_move(jit_State *J, int dest, int src){  |  copyslot BASE[dest], BASE[src]}static void jit_op_loadk(jit_State *J, int dest, int kidx){  const TValue *kk = &J->pt->k[kidx];  int rk = jit_return_k(J);  if (rk) dest = 0;  |  copyconst BASE[dest], kk  if (rk) {    |  ret  }}static void jit_op_loadnil(jit_State *J, int first, int last){  int idx, num = last - first + 1;  int rk = jit_return_k(J);  |  xor eax, eax  // Assumes: LUA_TNIL == 0  if (rk) {    |  settt BASE[0], eax    |  ret  } else if (num <= 8) {    for (idx = first; idx <= last; idx++) {      |  settt BASE[idx], eax  // 3/6 bytes    }  } else {    |  lea ecx, BASE[first].tt  // 15-21 bytes    |  lea edx, BASE[last].tt    |1:    |  mov [ecx], eax    |  cmp ecx, edx    |  lea ecx, [ecx+#BASE]  // Preserves CC.    |  jbe <1  }}static void jit_op_loadbool(jit_State *J, int dest, int b, int dojump){  int rk = jit_return_k(J);  if (rk) dest = 0;  |  setbvalue BASE[dest], b  if (rk) {    |  ret  } else if (dojump) {    const TValue *h = hint_getpc(J, COMBINE, J->nextpc);    if (!(ttisboolean(h) && bvalue(h) == 0)) {  /* Avoid jmp around dead ins. */      |  jmp =>J->nextpc+1    }  }}/* ------------------------------------------------------------------------ */static void jit_op_getupval(jit_State *J, int dest, int uvidx){  |  getLCL  |  mov UPVAL:ecx, LCL->upvals[uvidx]  |  mov TOP, UPVAL:ecx->v  |  copyslot BASE[dest], TOP[0]}static void jit_op_setupval(jit_State *J, int src, int uvidx){  |  getLCL  |  mov UPVAL:ecx, LCL->upvals[uvidx]  |  mov TOP, UPVAL:ecx->v  |  // This is really copyslot TOP[0], BASE[src] with compare mixed in.  |   mov eax, BASE[src].tt  |   mov GCOBJECT:edx, BASE[src].value  |   mov TOP->tt, eax  |  cmp eax, LUA_TSTRING				// iscollectable(val)?  |   mov eax, BASE[src].value.na[1]  |   mov TOP->value, GCOBJECT:edx  |   mov TOP->value.na[1], eax  |  jae >5  |4:  |.tail  |5:  |  test byte GCOBJECT:edx->gch.marked, WHITEBITS	// && iswhite(val)  |  jz <4  |  test byte UPVAL:ecx->marked, bitmask(BLACKBIT)	// && isblack(uv)  |  jz <4  |  call ->BARRIERF					// Yes, need barrier.  |  jmp <4  |.code  |.jsub BARRIERF			// luaC_barrierf() with regparms.  |  mov ARG4, GCOBJECT:edx  |  mov ARG3, UPVAL:ecx  |  mov ARG2, L  |  jmp &luaC_barrierf			// Chain to C code.  |.endjsub}/* ------------------------------------------------------------------------ *//* Optimized table lookup routines. Enter via jsub, fallback to C. *//* Fallback for GETTABLE_*. Temporary key is in L->env. */static void jit_gettable_fb(lua_State *L, Table *t, StkId dest){  Table *mt = t->metatable;  const TValue *tm = luaH_getstr(mt, G(L)->tmname[TM_INDEX]);  if (ttisnil(tm)) {  /* No __index method? */    mt->flags |= 1<<TM_INDEX;  /* Cache this fact. */    setnilvalue(dest);  } else if (ttisfunction(tm)) {  /* __index function? */    ptrdiff_t destr = savestack(L, dest);    setobj2s(L, L->top, tm);    sethvalue(L, L->top+1, t);    setobj2s(L, L->top+2, &L->env);    luaD_checkstack(L, 3);    L->top += 3;    luaD_call(L, L->top - 3, 1);    dest = restorestack(L, destr);    L->top--;    setobjs2s(L, dest, L->top);  } else {  /* Let luaV_gettable() continue with the __index object. */    luaV_gettable(L, tm, &L->env, dest);  }  |//-----------------------------------------------------------------------  |.jsub GETGLOBAL			// Lookup global variable.  |// Call with: TSTRING:edx (key), BASE (dest)  |  mov CI, L->ci  |  mov TOP, CI->func  |  mov LCL, TOP->value  |  mov TABLE:edi, LCL->env  |  jmp >9  |.endjsub  |  |//-----------------------------------------------------------------------  |.jsub GETTABLE_KSTR			// Lookup constant string in table.  |// Call with: TOP (tab), TSTRING:edx (key), BASE (dest)  |  cmp dword TOP->tt, LUA_TTABLE  |   mov TABLE:edi, TOP->value  |  jne ->DEOPTIMIZE_CALLER		// Not a table? Deoptimize.  |  |// Common entry: TABLE:edi (tab), TSTRING:edx (key), BASE (dest)  |// Restores BASE, destroys eax, ecx, edx, edi (TOP).  |9:  |  movzx ecx, byte TABLE:edi->lsizenode	// hashstr(t, key).  |  mov eax, 1  |  shl eax, cl  |  dec eax  |  and eax, TSTRING:edx->tsv.hash  |  Nodemul NODE:eax  |  add NODE:eax, TABLE:edi->node  |  |1:  // Start of inner loop. Check node key.  |  cmp dword NODE:eax->i_key.nk.tt, LUA_TSTRING  |  jne >2  |  cmp aword NODE:eax->i_key.nk.value, TSTRING:edx  |  jne >2  |  // Note: swapping the two checks is faster, but valgrind complains.  |// Assumes: (int)&(((Node *)0)->i_val) == (int)&(((StkId)0)->value)  |  |// Ok, key found. Copy node value to destination (stack) slot.  |  mov ecx, NODE:eax->i_val.tt  |  test ecx, ecx; je >3			// Node has nil value?  ||if (J->flags & JIT_F_CPU_SSE2) {  |  movq xmm0, qword NODE:eax->i_val.value  |  movq qword BASE->value, xmm0  ||} else {  |  mov edx, NODE:eax->i_val.value  |  mov edi, NODE:eax->i_val.value.na[1]  |  mov BASE->value, edx  |  mov BASE->value.na[1], edi  ||}  |  mov BASE->tt, ecx  |  mov BASE, L->base  |  ret  |2:  |  mov NODE:eax, NODE:eax->i_key.nk.next	// Get next key in chain.  |  test NODE:eax, NODE:eax  |  jnz <1					// Loop if non-NULL.  |  |  xor ecx, ecx  |3:  |  mov TABLE:eax, TABLE:edi->metatable  |  test TABLE:eax, TABLE:eax  |  jz >4					// No metatable?  |  test byte TABLE:eax->flags, 1<<TM_INDEX  |  jz >5					// Or 'no __index' flag set?  |4:  |  settt BASE[0], ecx				// Yes, set to nil.  |  mov BASE, L->base  |  ret  |  |5:  // Otherwise chain to C code which eventually calls luaV_gettable.  |  setsvalue L->env, TSTRING:edx		// Use L->env as temp key.  |  mov ecx, [esp]  |  sub esp, FRAME_OFFSET  |  mov L->savedpc, ecx  |  call &jit_gettable_fb, L, TABLE:edi, BASE  |  add esp, FRAME_OFFSET  |  mov BASE, L->base  |  ret  |.endjsub  |  |//-----------------------------------------------------------------------  |.jsub GETTABLE_STR			// Lookup string in table.  |// Call with: TOP (tab), TVALUE:ecx (key), BASE (dest)  |  mov eax, TOP->tt; shl eax, 4; or eax, TVALUE:ecx->tt  |  cmp eax, LUA_TTABLE_STR  |   mov TABLE:edi, TOP->value  |   mov TSTRING:edx, TVALUE:ecx->value  |  je <9					// Types ok? Continue above.  |  jmp ->DEOPTIMIZE_CALLER		// Otherwise deoptimize.  |.endjsub}/* Fallback for SETTABLE_*STR. Temporary (string) key is in L->env. */static void jit_settable_fb(lua_State *L, Table *t, StkId val){  Table *mt = t->metatable;  const TValue *tm = luaH_getstr(mt, G(L)->tmname[TM_NEWINDEX]);  if (ttisnil(tm)) {  /* No __newindex method? */    mt->flags |= 1<<TM_NEWINDEX;  /* Cache this fact. */    t->flags = 0;  /* But need to clear the cache for the table itself. */    setobj2t(L, luaH_setstr(L, t, rawtsvalue(&L->env)), val);    luaC_barriert(L, t, val);  } else if (ttisfunction(tm)) {  /* __newindex function? */    setobj2s(L, L->top, tm);    sethvalue(L, L->top+1, t);    setobj2s(L, L->top+2, &L->env);    setobj2s(L, L->top+3, val);    luaD_checkstack(L, 4);    L->top += 4;    luaD_call(L, L->top - 4, 0);  } else {  /* Let luaV_settable() continue with the __newindex object. */    luaV_settable(L, tm, &L->env, val);  }  |//-----------------------------------------------------------------------  |.jsub BARRIERBACK			// luaC_barrierback() with regparms.  |// Call with: TABLE:edi (table). Destroys ecx, edx.  |  mov GL:ecx, L->l_G  |   and byte TABLE:edi->marked, (~bitmask(BLACKBIT))&0xff  |  mov edx, GL:ecx->grayagain  |   mov GL:ecx->grayagain, TABLE:edi  |  mov TABLE:edi->gclist, edx  |  ret  |.endjsub  |  |//-----------------------------------------------------------------------  |.jsub SETGLOBAL			// Set global variable.  |// Call with: TSTRING:edx (key), BASE (val)  |  mov CI, L->ci  |  mov TOP, CI->func  |  mov LCL, TOP->value  |  mov TABLE:edi, LCL->env  |  jmp >9  |.endjsub  |  |//-----------------------------------------------------------------------  |.jsub SETTABLE_KSTR			// Set constant string entry in table.  |// Call with: TOP (tab), TSTRING:edx (key), BASE (val)  |  cmp dword TOP->tt, LUA_TTABLE  |   mov TABLE:edi, TOP->value  |  jne ->DEOPTIMIZE_CALLER		// Not a table? Deoptimize.  |  |// Common entry: TABLE:edi (tab), TSTRING:edx (key), BASE (val)  |// Restores BASE, destroys eax, ecx, edx, edi (TOP).  |9:  |  movzx ecx, byte TABLE:edi->lsizenode	// hashstr(t, key).  |  mov eax, 1  |  shl eax, cl  |  dec eax  |  and eax, TSTRING:edx->tsv.hash  |  Nodemul NODE:eax  |  add NODE:eax, TABLE:edi->node  |  |1:  // Start of inner loop. Check node key.  |  cmp dword NODE:eax->i_key.nk.tt, LUA_TSTRING  |  jne >4  |  cmp aword NODE:eax->i_key.nk.value, TSTRING:edx  |  jne >4  |  // Note: swapping the two checks is faster, but valgrind complains.  |  |// Ok, key found. Copy new value to node value.  |  cmp dword NODE:eax->i_val.tt, LUA_TNIL	// Previous value is nil?  |  je >6  |  // Assumes: (int)&(((Node *)0)->i_val) == (int)&(((StkId)0)->value)  |2:  |  mov byte TABLE:edi->flags, 0		// Clear metamethod cache.  |3:  // Target for SETTABLE_NUM below.  |  test byte TABLE:edi->marked, bitmask(BLACKBIT)  // isblack(table)  |  jnz >8				// Unlikely, but set barrier back.  |7:  // Caveat: recycled label.  |  copyslot TVALUE:eax[0], BASE[0], ecx, edx, TOP  |  mov BASE, L->base  |  ret  |  |8:  // Avoid valiswhite() check -- black2gray(table) is ok.  |  call ->BARRIERBACK  |  jmp <7  |  |4:  |  mov NODE:eax, NODE:eax->i_key.nk.next	// Get next key in chain.  |  test NODE:eax, NODE:eax  |  jnz <1					// Loop if non-NULL.  |  |// Key not found. Add a new one, but check metatable first.  |  mov TABLE:ecx, TABLE:edi->metatable  |  test TABLE:ecx, TABLE:ecx  |  jz >5					// No metatable?  |  test byte TABLE:ecx->flags, 1<<TM_NEWINDEX  |  jz >7					// Or 'no __newindex' flag set?  |  |5:  // Add new key.  |  // No need for setting L->savedpc since only LUA_ERRMEM may be thrown.  |  lea TVALUE:eax, L->env  |  setsvalue TVALUE:eax[0], TSTRING:edx  |  sub esp, FRAME_OFFSET

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美激情| 九九九久久久精品| 精品午夜久久福利影院| 91精品国产综合久久婷婷香蕉 | 奇米影视在线99精品| 欧美伦理视频网站| 久久精品国产亚洲5555| 国产亚洲成aⅴ人片在线观看| 国产精品99久| 亚洲你懂的在线视频| 欧美日韩一区久久| 麻豆成人av在线| 国产欧美一区二区精品久导航| 国产精品一二三区| 综合网在线视频| 欧美日韩成人综合在线一区二区| 无码av中文一区二区三区桃花岛| 欧美mv日韩mv亚洲| fc2成人免费人成在线观看播放| 亚洲精品国产第一综合99久久| 欧美人妖巨大在线| 国产高清不卡二三区| 亚洲图片激情小说| 5月丁香婷婷综合| 成人av资源在线| 日韩激情中文字幕| 日本一区二区成人| 91超碰这里只有精品国产| 国产又黄又大久久| 一区二区三区色| 久久综合九色综合97_久久久| 不卡大黄网站免费看| 日韩精品色哟哟| 日韩毛片精品高清免费| 日韩视频在线观看一区二区| 成人免费精品视频| 裸体一区二区三区| 伊人一区二区三区| 久久九九久精品国产免费直播| 在线视频你懂得一区二区三区| 国内外成人在线| 五月天一区二区三区| 国产精品国产成人国产三级| 欧美精品一区二区高清在线观看| 色天天综合色天天久久| 国产精品99久久不卡二区| 日韩有码一区二区三区| 亚洲欧美成人一区二区三区| 亚洲精品乱码久久久久久久久| 精品国产一区二区三区四区四| 欧美性大战久久久久久久蜜臀| 国产精品一二三区| 加勒比av一区二区| 午夜精品免费在线观看| 中文字幕在线免费不卡| 久久久久久久性| 91精品国产91久久久久久最新毛片 | 成人动漫av在线| 精品中文av资源站在线观看| 亚洲成人午夜影院| 亚洲专区一二三| 亚洲男人的天堂av| 国产精品国产自产拍高清av| 精品99999| 欧美一级一区二区| 欧美日韩免费一区二区三区 | 久久精品一区蜜桃臀影院| 91精品中文字幕一区二区三区| 欧美曰成人黄网| 91日韩精品一区| 91在线porny国产在线看| 99在线热播精品免费| 播五月开心婷婷综合| 99视频精品免费视频| 懂色一区二区三区免费观看 | 风间由美一区二区三区在线观看 | 免费人成网站在线观看欧美高清| 亚洲国产综合91精品麻豆 | 亚洲成人一区二区| 亚洲网友自拍偷拍| 亚洲国产三级在线| 亚洲超碰97人人做人人爱| 亚洲一区二区欧美激情| 亚洲第一成年网| 日韩成人精品在线| 99久久精品国产一区| 成人一级黄色片| 成人免费av在线| 91小视频免费看| 欧美专区在线观看一区| 欧美电影在线免费观看| 在线不卡a资源高清| 日韩午夜中文字幕| 欧美精品一区二区三区四区| 久久在线观看免费| 精品裸体舞一区二区三区| 久久综合久久99| 综合色中文字幕| 亚洲国产精品一区二区www在线| 亚欧色一区w666天堂| 精品亚洲aⅴ乱码一区二区三区| 另类综合日韩欧美亚洲| 成人h动漫精品| 欧美性淫爽ww久久久久无| 欧美美女直播网站| 日韩欧美一区二区久久婷婷| 久久久久久99精品| 亚洲人成精品久久久久久| 午夜精品123| 国产河南妇女毛片精品久久久| 99久久精品免费精品国产| 7777精品伊人久久久大香线蕉经典版下载| 6080日韩午夜伦伦午夜伦| 日本一区二区三区dvd视频在线| 亚洲欧洲三级电影| 日韩国产在线观看一区| 国产成人精品亚洲777人妖| 色婷婷av一区二区三区软件| 日韩一区二区三区电影在线观看| 日本一区二区在线不卡| 亚洲午夜电影在线观看| 国产美女娇喘av呻吟久久| 色综合久久88色综合天天免费| 欧美一级国产精品| 国产精品久久久久久久久图文区 | 亚洲国产成人在线| 亚洲高清一区二区三区| 国产剧情一区二区| 欧美日韩国产首页| 国产精品午夜久久| 蜜臀久久99精品久久久久久9| 97se亚洲国产综合自在线| 日韩免费看的电影| 亚洲一区二区三区视频在线播放 | 中文字幕一区二区三中文字幕| 日韩av一区二区三区四区| 色综合久久中文字幕综合网 | 欧美裸体一区二区三区| 亚洲视频在线观看一区| 紧缚奴在线一区二区三区| 91麻豆精品国产综合久久久久久 | 欧美日韩一区二区三区高清| 国产精品毛片高清在线完整版| 日一区二区三区| 91电影在线观看| 欧美国产精品一区| 国产综合色精品一区二区三区| 4438成人网| 亚洲国产精品久久艾草纯爱 | 日本精品一级二级| 欧美激情中文不卡| 国产呦萝稀缺另类资源| 91精品国产美女浴室洗澡无遮挡| 一区二区三区在线观看国产 | 亚洲一卡二卡三卡四卡| 99精品视频在线免费观看| 久久精品日产第一区二区三区高清版 | 国产精品77777竹菊影视小说| 精品美女被调教视频大全网站| 美女性感视频久久| 51久久夜色精品国产麻豆| 日韩在线卡一卡二| 在线电影一区二区三区| 无吗不卡中文字幕| 欧美麻豆精品久久久久久| 日韩1区2区日韩1区2区| 欧美欧美欧美欧美首页| 亚洲成a人片综合在线| 欧美性大战久久久久久久| 玉足女爽爽91| 欧美亚男人的天堂| 日韩中文字幕1| 欧美精品一区二区三区高清aⅴ| 国产在线一区二区综合免费视频| 精品处破学生在线二十三| 国产成人在线视频网站| 欧美激情一二三区| 色欧美日韩亚洲| 一区二区三区四区高清精品免费观看 | 婷婷综合另类小说色区| 欧美一级黄色录像| 国产福利一区二区三区在线视频| 国产日韩欧美精品一区| 成人黄页在线观看| 亚洲视频每日更新| 欧洲国产伦久久久久久久| 天天色天天爱天天射综合| 欧美成人aa大片| 丁香婷婷综合激情五月色| 亚洲欧美日韩中文播放| 欧美三区免费完整视频在线观看| 视频一区欧美日韩| 久久精品亚洲精品国产欧美 | 日本女优在线视频一区二区| 日韩亚洲欧美高清| av毛片久久久久**hd| 亚洲h在线观看| 国产亚洲欧美日韩日本| 欧美专区日韩专区| 国产老妇另类xxxxx|