📄 bytecodes.c
字号:
long64 value = GET_LONG(sp - 1); SET_LONG(sp - 1, ll_ushr(value, s));DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IAND) /* Boolean integer AND */ long temp = popStack(); topStack &= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LAND) /* Boolean long AND */ thirdStack &= topStack; fourthStack &= secondStack; lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IOR) /* Boolean integer OR */ long temp = popStack(); topStack |= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LOR) /* Boolean long OR */ thirdStack |= topStack; fourthStack |= secondStack; lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IXOR) /* Boolean integer XOR */ long temp = popStack(); topStack ^= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LXOR) /* Boolean long XOR */ thirdStack ^= topStack; fourthStack ^= secondStack; lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IINC) /* Increment local variable */ unsigned int index = ip[1]; long value = ((signed char *)ip)[2]; lp[index] = ((long)(lp[index]) + value);DONE(3)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2L) /* Convert integer to long */ long value = *(long *)sp;#if BIG_ENDIAN ((long *)sp)[1] = value; ((long *)sp)[0] = value >> 31;#elif LITTLE_ENDIAN || !COMPILER_SUPPORTS_LONG ((long *)sp)[1] = value >> 31;#else SET_LONG(sp, value);#endif oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(I2F) /* Convert integer to float */ *(float*)sp = (float)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(I2D) /* Convert integer to double */ SET_DOUBLE(sp, (double)*(long*)sp); oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(L2I) /* Convert long to integer */ oneLess;#if BIG_ENDIAN sp[0] = sp[1];#elif LITTLE_ENDIAN || !COMPILER_SUPPORTS_LONG /* do nothing */#else sp[0] = (long)(GET_LONG(sp));#endifDONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(L2F) /* Convert long to float */ oneLess; *(float*)sp = ll2float(GET_LONG(sp));DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(L2D) /* Convert long to double */ double value = ll2double(GET_LONG(sp - 1)); SET_DOUBLE(sp-1, value);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(F2I) /* Convert float to integer */ *(long*)sp = (long)*(float*)sp;;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(F2L) /* Convert float to long */ SET_LONG(sp, float2ll(*(float*)sp)); oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(F2D) /* Convert float to double */ SET_DOUBLE(sp, (double)*(float*)sp); oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(D2I) /* Convert double to integer */ oneLess; *(long*)sp = (long)GET_DOUBLE(sp);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(D2L) /* Convert double to long */ long64 value = double2ll(GET_DOUBLE( sp - 1)); SET_LONG(sp - 1, value);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(D2F) /* Convert double to float */ oneLess; *(float*)sp = (float)GET_DOUBLE(sp);;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2B) /* Convert integer to byte (with sign extension) */ *(long*)sp = (signed char)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2C) /* Convert integer to UNICODE character */ *(long*)sp = (unsigned short)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2S) /* Convert integer to short (with sign extension) */ *(long*)sp = (short)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LCMP) /* Compare long */ long result;#if COMPILER_SUPPORTS_LONG long64 rvalue = GET_LONG(sp-1); long64 lvalue = GET_LONG(sp-3); result = lvalue < rvalue ? -1 : lvalue == rvalue ? 0 : 1;#else long64 *rvalue = (long64*)(sp-1); long64 *lvalue = (long64*)(sp-3); signed long highLeft = (signed long)(lvalue->high); signed long highRight = (signed long)(rvalue->high); if (highLeft == highRight) { unsigned long lowLeft = (unsigned long)(lvalue->low); unsigned long lowRight = (unsigned long)(rvalue->low); result = (lowLeft < lowRight ? -1 : lowLeft > lowRight ? 1 : 0); } else { result = highLeft < highRight ? -1 : 1; }#endif lessStack(3); *(long *)sp = result;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FCMPL) /* Compare float */ double rvalue = *(float*)sp; double lvalue = *(float*)(sp-1); oneLess; *(long*)sp = (lvalue < rvalue) ? -1 : (lvalue == rvalue) ? 0 : (lvalue > rvalue) ? 1 : (TOKEN & 01) ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FCMPG) /* Compare float */ double rvalue = *(float*)sp; double lvalue = *(float*)(sp-1); oneLess; *(long*)sp = (lvalue < rvalue) ? -1 : (lvalue == rvalue) ? 0 : (lvalue > rvalue) ? 1 : (TOKEN & 01) ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DCMPL) /* Compare double */ double rvalue = GET_DOUBLE(sp-1); double lvalue = GET_DOUBLE(sp-3); lessStack(3); *(long*)sp = (lvalue < rvalue) ? -1 : (lvalue == rvalue) ? 0 : (lvalue > rvalue) ? 1 : (TOKEN & 01) ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DCMPG) /* Compare double */ double rvalue = GET_DOUBLE(sp-1); double lvalue = GET_DOUBLE(sp-3); lessStack(3); *(long*)sp = (lvalue < rvalue) ? -1 : (lvalue == rvalue) ? 0 : (lvalue > rvalue) ? 1 : (TOKEN & 01) ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFEQ) /* Branch if equal to zero */ BRANCHIF( (popStack() == 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFNE) /* Branch if different than zero */ BRANCHIF( (popStack() != 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFLT) /* Branch if less than zero */ BRANCHIF( ((long)popStack() < 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFGE) /* Branch if greater or equal to zero */ BRANCHIF( ((long)popStack() >= 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFGT) /* Branch if greater than zero */ BRANCHIF( ((long)popStack() > 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFLE) /* Branch if less or equal to zero */ BRANCHIF( ((long)popStack() <= 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPEQ) /* Branch if equal */ long b = popStack(); long a = popStack(); BRANCHIF( (a == b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPNE) /* Branch if not equal */ long b = popStack(); long a = popStack(); BRANCHIF( (a != b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPLT) /* Branch if less than */ long b = popStack(); long a = popStack(); BRANCHIF( (a < b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPGE) /* Branch if greater or equal */ long b = popStack(); long a = popStack(); BRANCHIF( (a >= b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPGT) /* Branch if greater */ long b = popStack(); long a = popStack(); BRANCHIF( (a > b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPLE) /* Branch if less or equal */ long b = popStack(); long a = popStack(); BRANCHIF( (a <= b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ACMPEQ) /* Branch if references are equal */ long b = popStack(); long a = popStack(); BRANCHIF( (a == b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ACMPNE) /* Branch if references are not equal */ long b = popStack(); long a = popStack(); BRANCHIF( (a != b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(GOTO) /* Branch if references are not equal */ ip += getShort(ip + 1);DONE_R#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODES
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -