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

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

?? ljit_x86.dasc

?? lua的即時編譯器。支持lua 5.1.2版本
?? DASC
?? 第 1 頁 / 共 5 頁
字號:
	|  fld qword BASE[rkc].value	|  fld qword [kval]      } else {	|  fld qword [kval]	|  fld qword BASE[rkb].value      }    } else {      |  isnumber2 rkb, rkc      |   mov eax, BASE[rkb].value.na[1]      |  jne L_DEOPTIMIZEF      |   or eax, BASE[rkc].value.na[1]; js L_DEOPTIMIZEF      |  fld qword BASE[rkc].value      |  fld qword BASE[rkb].value    }    |1: ; fprem; fnstsw ax; sahf; jp <1    |  fstp st1    goto fpstore;  case TM_POW:    if (hastail || !kval) break;  /* Avoid this if not optimizing. */    if (rev) {  /* x^k for k > 0, k integer. */      lua_Number n = kval->n;      int k;      lua_number2int(k, n);      /* All positive integers would work. But need to limit code explosion. */      if (k > 0 && k <= 65536 && (lua_Number)k == n) {	|  isnumber idx; jne L_DEOPTIMIZEF	|  fld qword BASE[idx]	for (; (k & 1) == 0; k >>= 1) {  /* Handle leading zeroes (2^k). */	  |  fmul st0	}	if ((k >>= 1) != 0) {  /* Handle trailing bits. */	  |  fld st0	  |  fmul st0	  for (; k != 1; k >>= 1) {	    if (k & 1) {	      |  fmul st1, st0	    }	    |  fmul st0	  }	  |  fmulp st1	}	goto fpstore;      }    } else if (kval->n > (lua_Number)0) {  /* k^x for k > 0. */      int log2kval[3];  /* Enough storage for a tword (80 bits). */      log2kval[3] = 0;  /* Avoid leaking garbage. */      /* Double precision log2(k) doesn't cut it (3^x != 3 for x = 1). */      ((void (*)(int *, double))J->jsub[JSUB_LOG2_TWORD])(log2kval, kval->n);      |  mov ARG1, log2kval[0]			// Abuse stack for tword const.      |  mov ARG2, log2kval[1]      |  mov ARG3, log2kval[2]			// TODO: store2load fwd stall.      |  isnumber idx; jne L_DEOPTIMIZEF      |  fld tword [esp]      |  fmul qword BASE[idx].value		// log2(k)*x      |  fld st0; frndint; fsub st1, st0; fxch	// Split into fract/int part.      |  f2xm1; fld1; faddp st1; fscale		// (2^fract-1 +1) << int.      |  fstp st1      |.jsub LOG2_TWORD		// Calculate log2(k) with max. precision.      |// Called with (int *ptr, double k).      |  fld1; fld FPARG2			// Offset ok due to retaddr.      |  fyl2x      |  mov eax, ARG2				// Really ARG1.      |  fstp tword [eax]      |  ret      |.endjsub      goto fpstore;    }    break;  }  /* Check number type and load 1st operand. */  if (kval) {    |  isnumber idx; jne L_DEOPTIMIZEF    |  loadnvaluek kval  } else {    if (rkb == rkc) {      |  isnumber rkb    } else {      |  isnumber2 rkb, rkc    }    |  jne L_DEOPTIMIZEF    |  fld qword BASE[rkb].value  }  /* Encode arithmetic operation with 2nd operand. */  switch ((ev<<1)+rev) {  case TM_ADD<<1: case (TM_ADD<<1)+1:    if (rkb == rkc) {      |  fadd st0    } else {      |  fadd qword BASE[idx].value    }    break;  case TM_SUB<<1:    |  fsub qword BASE[idx].value    break;  case (TM_SUB<<1)+1:    |  fsubr qword BASE[idx].value    break;  case TM_MUL<<1: case (TM_MUL<<1)+1:    if (rkb == rkc) {      |  fmul st0    } else {      |  fmul qword BASE[idx].value    }    break;  case TM_DIV<<1:    |  fdiv qword BASE[idx].value    break;  case (TM_DIV<<1)+1:    |  fdivr qword BASE[idx].value    break;  case TM_POW<<1:    |  sub esp, S2LFRAME_OFFSET    |  fstp FPARG1    |  fld qword BASE[idx].value    |  fstp FPARG2    |  call &pow    |  add esp, S2LFRAME_OFFSET    break;  case (TM_POW<<1)+1:    |  sub esp, S2LFRAME_OFFSET    |  fstp FPARG2    |  fld qword BASE[idx].value    |  fstp FPARG1    |  call &pow    |  add esp, S2LFRAME_OFFSET    break;  case TM_UNM<<1: case (TM_UNM<<1)+1:    |  fchs				// No 2nd operand.    break;  default:  /* TM_LT or TM_LE. */    |  fld qword BASE[idx].value    |  fcomparepp    |  jp =>dest?(J->nextpc+1):target	// Unordered means false.    jit_assert(dest == 0 || dest == 1);  /* Really cond. */    switch (((rev^dest)<<1)+(dest^(ev == TM_LT))) {    case 0:      |  jb =>target      break;    case 1:      |  jbe =>target      break;    case 2:      |  ja =>target      break;    case 3:      |  jae =>target      break;    }    goto skipstore;  }fpstore:  /* Store result and set result type (if necessary). */  |  fstp qword BASE[dest].value  if (dest != rkb && dest != rkc) {    |  settt BASE[dest], LUA_TNUMBER  }skipstore:  if (!hastail) {    jit_deopt_target(J, 0);    return;  }  |4:  |.tail  |L_DEOPTLABEL:  // Recycle as fallback label.fallback:  /* Generic fallback for arithmetic ops. */  if (kkb) {    |  mov ecx, &kkb  } else {    |  lea ecx, BASE[rkb]  }  if (kkc) {    |  mov edx, &kkc  } else {    |  lea edx, BASE[rkc]  }  if (target) {  /* TM_LT or TM_LE. */    |  mov L->savedpc, &(J->nextins+1)    |  call &ev==TM_LT?luaV_lessthan:luaV_lessequal, L, ecx, edx    |  test eax, eax    |  mov BASE, L->base    if (dest) {  /* cond */      |  jnz =>target    } else {      |  jz =>target    }  } else {    |  addidx BASE, dest    |  mov L->savedpc, &J->nextins    |  call &luaV_arith, L, BASE, ecx, edx, ev    |  mov BASE, L->base  }  if (hastail) {    | jmp <4    |.code  }}/* ------------------------------------------------------------------------ */static void jit_fallback_len(lua_State *L, StkId ra, const TValue *rb){  switch (ttype(rb)) {  case LUA_TTABLE:    setnvalue(ra, cast_num(luaH_getn(hvalue(rb))));    break;  case LUA_TSTRING:    setnvalue(ra, cast_num(tsvalue(rb)->len));    break;  default: {    const TValue *tm = luaT_gettmbyobj(L, rb, TM_LEN);    if (ttisfunction(tm)) {      ptrdiff_t rasave = savestack(L, ra);      setobj2s(L, L->top, tm);      setobj2s(L, L->top+1, rb);      luaD_checkstack(L, 2);      L->top += 2;      luaD_call(L, L->top - 2, 1);      ra = restorestack(L, rasave);      L->top--;      setobjs2s(L, ra, L->top);    } else {      luaG_typeerror(L, rb, "get length of");    }    break;  }  }}static void jit_op_len(jit_State *J, int dest, int rb){  switch (ttype(hint_get(J, TYPE))) {  case LUA_TTABLE:    jit_deopt_target(J, 0);    |   istable rb    |  mov TABLE:ecx, BASE[rb].value    |   jne L_DEOPTIMIZE		// TYPE hint was wrong?    |  call &luaH_getn, TABLE:ecx    |  mov TMP1, eax    |  fild dword TMP1    |  fstp qword BASE[dest].value    |  settt BASE[dest], LUA_TNUMBER    break;  case LUA_TSTRING:    jit_deopt_target(J, 0);    |   isstring rb    |  mov TSTRING:ecx, BASE[rb].value    |   jne L_DEOPTIMIZE		// TYPE hint was wrong?    |  fild aword TSTRING:ecx->tsv.len	// size_t    |  fstp qword BASE[dest].value    |  settt BASE[dest], LUA_TNUMBER    break;  default:    |  lea TVALUE:ecx, BASE[rb]    |  addidx BASE, dest    |  mov L->savedpc, &J->nextins    |  call &jit_fallback_len, L, BASE, TVALUE:ecx    |  mov BASE, L->base    break;  }}static void jit_op_not(jit_State *J, int dest, int rb){  /* l_isfalse() without a branch -- truly devious. */  /* ((value & tt) | (tt>>1)) is only zero for nil/false. */  /* Assumes: LUA_TNIL == 0, LUA_TBOOLEAN == 1, bvalue() == 0/1 */  |  mov eax, BASE[rb].tt  |  mov ecx, BASE[rb].value  |  mov edx, 1  |  and ecx, eax  |  shr eax, 1  |  or ecx, eax  |  xor eax, eax  |  cmp ecx, edx  |  adc eax, eax  |  mov BASE[dest].tt, edx  |  mov BASE[dest].value, eax}/* ------------------------------------------------------------------------ */static void jit_op_concat(jit_State *J, int dest, int first, int last){  int num = last-first+1;  if (num == 2 && ttisstring(hint_get(J, TYPE))) {  /* Optimize common case. */    |  addidx BASE, first    |  call ->CONCAT_STR2    |  setsvalue BASE[dest], eax  } else {  /* Generic fallback. */    |  mov L->savedpc, &J->nextins    |  call &luaV_concat, L, num, last    |  mov BASE, L->base    if (dest != first) {      |  copyslot BASE[dest], BASE[first]    }  }  jit_checkGC(J);  /* Always do this, even for the optimized variant. */  |.jsub CONCAT_STR2			// Concatenate two strings.  |// Call with: BASE (first). Destroys all regs. L and BASE restored.  |  mov ARG2, L			// Save L (esi).  |  mov eax, BASE[0].tt; shl eax, 4; or eax, BASE[1].tt  |  sub eax, LUA_TSTR_STR		// eax = 0 on success.  |  jne ->DEOPTIMIZE_CALLER	// Wrong types? Deoptimize.  |  |1:  |   mov GL:edi, L->l_G  |  mov TSTRING:esi, BASE[0].value	// Caveat: L (esi) is gone now!  |  mov TSTRING:edx, BASE[1].value  |  mov ecx, TSTRING:esi->tsv.len	// size_t  |  test ecx, ecx  |  jz >2				// 1st string is empty?  |  or eax, TSTRING:edx->tsv.len	// eax is known to be zero.  |  jz >4				// 2nd string is empty?  |  add eax, ecx  |  jc >9				// Length overflow?  |  cmp eax, GL:edi->buff.buffsize	// size_t  |  ja >5				// Temp buffer overflow?  |  mov edi, GL:edi->buff.buffer  |  add esi, #TSTRING  |  rep; movsb				// Copy first string.  |  mov ecx, TSTRING:edx->tsv.len  |  lea esi, TSTRING:edx[1]  |  rep; movsb				// Copy second string.  |  |  sub edi, eax			// start = end - total.  |   mov L, ARG2			// Restore L (esi). Reuse as 1st arg.  |  mov ARG3, edi  |  mov ARG4, eax  |   mov BASE, L->base			// Restore BASE.  |  jmp &luaS_newlstr  |  |2:  // 1st string is empty.  |  mov eax, TSTRING:edx		// Return 2nd string.  |3:  |  mov L, ARG2			// Restore L (esi) and BASE.  |  mov BASE, L->base  |  ret  |  |4:  // 2nd string is empty.  |  mov eax, TSTRING:esi		// Return 1st string.  |  jmp <3  |  |5:  // Resize temp buffer.  |  // No need for setting L->savedpc since only LUA_ERRMEM may be thrown.  |  mov L, ARG2			// Restore L.  |  lea ecx, GL:edi->buff  |  sub esp, FRAME_OFFSET  |  call &luaZ_openspace, L, ecx, eax  |  add esp, FRAME_OFFSET  |  xor eax, eax			// BASE (first) and L saved. eax = 0.  |  jmp <1				// Just restart.  |  |9:  // Length overflow errors are rare (> 2 GB string required).  |  mov L, ARG2			// Need L for deoptimization.  |  jmp ->DEOPTIMIZE_CALLER  |.endjsub}/* ------------------------------------------------------------------------ */static void jit_op_eq(jit_State *J, int cond, int rkb, int rkc){  int target = jit_jmp_target(J);  int condtarget = cond ? (J->nextpc+1) : target;  jit_assert(cond == 0 || cond == 1);  /* Comparison of two constants. Evaluate at compile time. */  if (ISK(rkb&rkc)) {    if ((rkb == rkc) == cond) {  /* Constants are already unique. */      |  jmp =>target    }    return;  }  if (ISK(rkb|rkc)) {  /* Compare a variable and a constant. */    const TValue *kk;    if (ISK(rkb)) { int t = rkc; rkc = rkb; rkb = t; }  /* rkc holds const. */    kk = &J->pt->k[INDEXK(rkc)];    switch (ttype(kk)) {    case LUA_TNIL:      |  isnil rkb      break;    case LUA_TBOOLEAN:      if (bvalue(kk)) {	|  mov eax, BASE[rkb].tt	|  mov ecx, BASE[rkb].value	|  dec eax	|  dec ecx	|  or eax, ecx      } else {	|  mov eax, BASE[rkb].tt	|  dec eax	|  or eax, BASE[rkb].value      }      break;    case LUA_TNUMBER:      |// Note: bitwise comparison is not faster (and needs to handle -0 == 0).      |  isnumber rkb      |  jne =>condtarget      |  fld qword BASE[rkb].value      |  fld qword [&kk->value]      |  fcomparepp      |  jp =>condtarget  // Unordered means not equal.      break;    case LUA_TSTRING:      |  isstring rkb      |  jne =>condtarget      |  cmp aword BASE[rkb].value, &rawtsvalue(kk)      break;    default: jit_assert(0); break;    }  } else {  /* Compare two variables. */    |  mov eax, BASE[rkb].tt    |  cm

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区黄| 成人精品电影在线观看| 国产精品一二三四区| 色婷婷亚洲综合| 国产日韩欧美高清| 日本成人在线看| 色88888久久久久久影院野外| 精品精品欲导航| 亚洲国产精品久久久久秋霞影院| 成人免费高清在线| 欧美电视剧在线观看完整版| 亚洲午夜激情网页| 95精品视频在线| 亚洲国产高清aⅴ视频| 久久精品国产久精国产爱| 欧美日韩国产综合视频在线观看| 亚洲天堂精品视频| 丁香另类激情小说| 国产日韩欧美综合一区| 国产一区二区在线影院| 91精品国产欧美一区二区| 午夜精品影院在线观看| 在线免费av一区| 一区二区三区欧美日| av亚洲精华国产精华| 国产精品久久国产精麻豆99网站| 国产乱人伦偷精品视频免下载| 欧美一区二区三区四区高清 | 欧美色精品在线视频| 国产精品久久久久影院老司 | 久久精品一二三| 极品美女销魂一区二区三区| 91在线观看下载| 成人午夜在线视频| 亚洲成a人片在线观看中文| 一个色在线综合| 久88久久88久久久| 91精品1区2区| 欧美mv日韩mv国产| 一区在线观看免费| 图片区小说区国产精品视频| 成人99免费视频| 风流少妇一区二区| 国产欧美日韩三级| 国产白丝网站精品污在线入口| 国产亚洲欧美一区在线观看| 国产乱子伦一区二区三区国色天香| 精品国产区一区| 欧美午夜电影网| 高清国产一区二区三区| 久久欧美一区二区| 99久久亚洲一区二区三区青草| 亚洲色大成网站www久久九九| 91久久精品一区二区| 全国精品久久少妇| 国产欧美精品一区二区三区四区| 99视频超级精品| 日韩国产欧美在线播放| 2020国产精品久久精品美国| 91视频91自| 丝瓜av网站精品一区二区| 久久先锋影音av鲁色资源| 91小视频在线| 免费不卡在线视频| 国产精品久久久久久亚洲毛片| 欧美自拍偷拍午夜视频| 激情综合亚洲精品| 亚洲一区二区五区| 国产日韩欧美电影| 欧美日韩国产高清一区二区三区 | 久久蜜桃av一区精品变态类天堂 | 99久久免费国产| 毛片av一区二区| 亚洲免费观看在线观看| 日韩视频一区二区三区| 91视频免费观看| 久久福利视频一区二区| 一区二区三区精品| 久久久激情视频| 欧美区视频在线观看| 99视频精品全部免费在线| 久久草av在线| 亚洲v精品v日韩v欧美v专区| 亚洲国产高清aⅴ视频| 337p亚洲精品色噜噜噜| 91免费版pro下载短视频| 久久激五月天综合精品| 亚洲国产婷婷综合在线精品| 国产精品天美传媒| 久久婷婷久久一区二区三区| 在线电影国产精品| 色婷婷激情综合| 99久久国产免费看| 国产真实乱子伦精品视频| 视频一区欧美日韩| 亚洲愉拍自拍另类高清精品| 亚洲私人黄色宅男| 中文字幕电影一区| 久久婷婷色综合| 久久综合色综合88| 欧美videossexotv100| 欧美日韩午夜在线视频| 在线免费观看成人短视频| 97se亚洲国产综合自在线| 国产·精品毛片| 成人一道本在线| 成人av在线播放网址| 国产成人在线视频播放| 国产一区视频网站| 国产呦精品一区二区三区网站 | 亚洲美女区一区| 亚洲三级视频在线观看| 国产精品免费人成网站| 国产精品久久久久影院| 国产精品初高中害羞小美女文| 欧美国产禁国产网站cc| 国产精品久久毛片av大全日韩| 国产色一区二区| 亚洲人吸女人奶水| 一区二区三区高清| 亚洲大尺度视频在线观看| 日本中文一区二区三区| 麻豆成人91精品二区三区| 国产一区亚洲一区| 成人深夜视频在线观看| 91香蕉视频在线| 欧美日韩在线播放三区四区| 在线观看日韩av先锋影音电影院| 欧美在线色视频| 日韩一二三区视频| 国产亚洲一区字幕| 综合av第一页| 亚洲电影一级片| 美女视频网站久久| 福利视频网站一区二区三区| 色综合天天天天做夜夜夜夜做| 欧洲激情一区二区| 日韩免费看的电影| 国产精品三级电影| 亚洲成人免费视| 狠狠色丁香久久婷婷综| bt欧美亚洲午夜电影天堂| 在线观看国产日韩| 精品日韩欧美在线| 亚洲久本草在线中文字幕| 美女视频第一区二区三区免费观看网站 | 激情六月婷婷综合| 91捆绑美女网站| 欧美一区二区福利视频| 欧美激情综合五月色丁香| 亚洲高清视频中文字幕| 国产曰批免费观看久久久| 在线免费亚洲电影| 久久亚洲综合av| 亚洲自拍偷拍九九九| 国产高清视频一区| 欧美日韩高清一区二区三区| 国产精品色眯眯| 六月丁香综合在线视频| 色中色一区二区| 国产日韩欧美激情| 欧美a一区二区| 91麻豆swag| 欧美韩日一区二区三区| 麻豆精品在线观看| 91成人网在线| 中文字幕视频一区| 国产一区二三区好的| 欧美精品乱人伦久久久久久| 国产精品久久三区| 国产精品一区久久久久| 91精品欧美一区二区三区综合在 | 久久99精品久久久久久久久久久久 | 日韩免费看的电影| 亚洲成人免费在线观看| 不卡av电影在线播放| 欧美成人一区二区三区片免费| 久久综合av免费| www.欧美.com| 亚洲国产精品成人综合| 日本乱人伦aⅴ精品| 国产大陆a不卡| 美女视频网站久久| 亚洲综合免费观看高清完整版在线| 欧美女孩性生活视频| 91视频免费观看| 99国产精品一区| av不卡免费在线观看| 成人一区二区三区中文字幕| 亚洲欧洲精品一区二区三区 | 26uuu久久天堂性欧美| 亚洲午夜影视影院在线观看| 暴力调教一区二区三区| 日本一区二区视频在线观看| 国内一区二区视频| 久久久国产午夜精品| 国产精品一区二区无线| 久久精品一区四区| 成人av在线资源网| 亚洲一区二区影院|