⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucodestaticmethods.java

📁 JPC: x86 PC Hardware Emulator. 牛津大学开发的一个纯JAVA的x86系统结构硬件模拟器。
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        reg1 &= 0x1f;
        return reg1 % 17; 
    }

    public static boolean cflag_nef_RCL_O8_FLAGS_cflag_reg0_reg1(boolean cflag, int reg0, int reg1)
    {
	if (reg1 > 0)
            return ((reg0 & 0x100) != 0);
        return cflag;
    }

    public static boolean oflag_nef_RCL_O8_FLAGS_oflag_reg0_reg1(boolean oflag, int reg0, int reg1)
    {
        if (reg1 == 1)
            return ((reg0 & 0x180) != 0) && ((reg0 & 0x180) != 0x180);
        return oflag;
    }

    public static boolean cflag_nef_RCL_O16_FLAGS_cflag_reg0_reg1(boolean cflag, int reg0, int reg1)
    {
	if (reg1 > 0)
            return ((reg0 & 0x10000) != 0);
        return cflag;
    }

    public static boolean oflag_nef_RCL_O16_FLAGS_oflag_reg0_reg1(boolean oflag, int reg0, int reg1)
    {
        if (reg1 == 1)
            return ((reg0 & 0x18000) != 0) && ((reg0 & 0x18000) != 0x18000);
        return oflag;
    }

    public static int reg0_nef_RCR_O8_reg1_reg0_cflag(int reg1, int reg0, boolean cflag)
    {
        reg1 &= 0x1f; 
        reg1 %= 9; 
        reg0 |= (cflag ? 0x100 : 0);
        return (reg0 >>> reg1) | (reg0 << (9 - reg1));
    }

    public static int reg1_nef_RCR_O8_reg1(int reg1)
    {
        reg1 &= 0x1f; 
        return reg1 % 9;
    }

    public static int reg0_nef_RCR_O16_reg1_reg0_cflag(int reg1, int reg0, boolean cflag)
    {
        reg1 &= 0x1f; 
        reg1 %= 17; 
        reg0 |= (cflag ? 0x10000 : 0);
        return (reg0 >>> reg1) | (reg0 << (17 - reg1));
    }

    public static int reg1_nef_RCR_O16_reg1(int reg1)
    {
        reg1 &= 0x1f; 
        return reg1 % 17; 
    }

    public static boolean cflag_nef_RCR_O8_FLAGS_cflag_reg0_reg1(boolean cflag, int reg0, int reg1)
    {
 	if (reg1 > 0)
            return ((reg0 & 0x100) != 0);
        return cflag;
    }

    public static boolean oflag_nef_RCR_O8_FLAGS_oflag_reg0_reg1(boolean oflag, int reg0, int reg1)
    {
        if (reg1 == 1)
            return ((reg0 & 0x180) != 0) && ((reg0 & 0x180) != 0x180);
        return oflag;
    }

    public static boolean cflag_nef_RCR_O16_FLAGS_cflag_reg0_reg1(boolean cflag, int reg0, int reg1)
    {
	if (reg1 > 0)
            return ((reg0 & 0x10000) != 0);
        return cflag;
    }

    public static boolean oflag_nef_RCR_O16_FLAGS_oflag_reg0_reg1(boolean oflag, int reg0, int reg1)
    {
        if (reg1 == 1)
            return ((reg0 & 0x18000) != 0) && ((reg0 & 0x18000) != 0x18000);
        return oflag;
    }

    public static int reg0_nef_SHRD_O16_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
	reg2 &= 0x1f;
	if (reg2 != 0)
	    return (reg0 >>> reg2) | (reg1 << (16 - reg2));
	else
	    return reg0;
    }

    public static int reg1_nef_SHRD_O16_reg2(int reg2)
    {
	return reg2 & 0x1f;
    }

    public static int reg2_nef_SHRD_O16_reg0(int reg0)
    {
	return reg0;
    }

    public static int reg0_nef_SHRD_O32_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
	reg2 &= 0x1f;
	if (reg2 != 0)
	    return (reg0 >>> reg2) | (reg1 << (32 - reg2));
	else
	    return reg0;
    }

    public static int reg1_nef_SHRD_O32_reg2(int reg2)
    {
	return reg2 & 0x1f;
    }

    public static int reg2_nef_SHRD_O32_reg0(int reg0)
    {
	return reg0;
    }


    public static int reg0_nef_SHLD_O16_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
	reg2 &= 0x1f;
	if (reg2 != 0)
	    return (reg0 << reg2) | (reg1 >>> (16 - reg2));
	else
	    return reg0;
    }

    public static int reg1_nef_SHLD_O16_reg2(int reg2)
    {
	return reg2 & 0x1f;
    }

    public static int reg2_nef_SHLD_O16_reg0(int reg0)
    {
	return reg0;
    }

    public static int reg0_nef_SHLD_O32_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
	reg2 &= 0x1f;
	if (reg2 != 0)
	    return (reg0 << reg2) | (reg1 >>> (32 - reg2));
	else
	    return reg0;
    }

    public static int reg1_nef_SHLD_O32_reg2(int reg2)
    {
	return reg2 & 0x1f;
    }

    public static int reg2_nef_SHLD_O32_reg0(int reg0)
    {
	return reg0;
    }

    public static int reg0_nef_BSF_reg1_reg0(int reg1, int reg0)
    {
	if (reg1 == 0)
	    return reg0;
	else
	    return Integer.numberOfTrailingZeros(reg1);
    }

    public static int zflag_nef_BSF_reg1(int reg1)
    {
	if (reg1 == 0)
	    return 1;
	else
	    return 0;
    }

    public static int reg0_nef_BSR_reg1_reg0(int reg1, int reg0)
    {
	if (reg1 == 0)
	    return reg0;
	else
	    return 31 - Integer.numberOfTrailingZeros(reg1);
    }

    public static int zflag_nef_BSR_reg1(int reg1)
    {
	if (reg1 == 0)
	    return 1;
	else
	    return 0;
    }

    public static int reg0_nef_ADD_reg0_reg1(int reg0, int reg1)
    {
        return reg0 + reg1;
    }
    
    public static int reg2_nef_ADD_reg0(int reg0)
    {
        return reg0;
    }

    public static boolean aflag_nef_ADD_O8_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return ((((reg2 ^ reg1) ^ reg0) & 0x10) != 0);
    }

    public static boolean cflag_nef_ADD_O8_FLAGS_reg0(int reg0)
    {
        return ((reg0 & (~0xff)) != 0);
    }

    public static boolean oflag_nef_ADD_O8_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return (((reg2 & 0x80) == (reg1 & 0x80)) && ((reg2 & 0x80) != (reg0 & 0x80)));

//         if ((byte)reg1 > 0)
//             return ((byte)reg0 < (byte)reg2);
//         else
//             return ((byte)reg0 > (byte)reg2);
    }

    public static boolean pflag_nef_ADD_O8_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_ADD_O8_FLAGS_reg0(int reg0)
    {
        return (((byte) reg0) < 0);
    }

    public static boolean zflag_nef_ADD_O8_FLAGS_reg0(int reg0)
    {
        return (((byte) reg0) == 0);
    }

    public static boolean aflag_nef_ADD_O16_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return ((((reg2 ^ reg1) ^ reg0) & 0x10) != 0);
    }

    public static boolean cflag_nef_ADD_O16_FLAGS_reg0(int reg0)
    {
        return ((reg0 & (~0xffff)) != 0);
    }

    public static boolean oflag_nef_ADD_O16_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return (((reg2 & 0x8000) == (reg1 & 0x8000)) && ((reg2 & 0x8000) != (reg0 & 0x8000)));

//         if ((short)reg1 > 0)
//             return ((short)reg0 < (short)reg2);
//         else
//             return ((short)reg0 > (short)reg2);
    }
    
    public static boolean pflag_nef_ADD_O16_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }
    
    public static boolean sflag_nef_ADD_O16_FLAGS_reg0(int reg0)
    {
        return (((short) reg0) < 0);
    }
    
    public static boolean zflag_nef_ADD_O16_FLAGS_reg0(int reg0)
    {
        return (((short) reg0) == 0);
    }

    public static boolean aflag_nef_ADD_O32_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return ((((reg2 ^ reg1) ^ reg0) & 0x10) != 0);
    }

    public static boolean cflag_nef_ADD_O32_FLAGS_reg1_reg2(int reg1, int reg2)
    {
	long result = (0xffffffffL & reg2) + (0xffffffffL & reg1);
	return ((result & ~0xffffffffL) != 0);
    }

    public static boolean oflag_nef_ADD_O32_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return (((reg2 & 0x80000000) == (reg1 & 0x80000000)) && ((reg2 & 0x80000000) != (reg0 & 0x80000000)));

//         if (reg1 > 0)
//             return reg0 < reg2;
//         else
//             return reg0 > reg2;
    }

    public static boolean pflag_nef_ADD_O32_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_ADD_O32_FLAGS_reg0(int reg0)
    {
        return reg0 < 0;
    }

    public static boolean zflag_nef_ADD_O32_FLAGS_reg0(int reg0)
    {
        return reg0 == 0;
    }

    public static int reg0_nef_SUB_reg0_reg1(int reg0, int reg1)
    {
        return reg0 - reg1;
    }

    public static int reg2_nef_SUB_reg0(int reg0)
    {
        return reg0; 
    }

    public static boolean aflag_nef_SUB_O8_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return ((((reg2 ^ reg1) ^ reg0) & 0x10) != 0);
    }

    public static boolean cflag_nef_SUB_O8_FLAGS_reg0(int reg0)
    {
        return ((reg0 & (~0xff)) != 0);
    }

    public static boolean oflag_nef_SUB_O8_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return (((reg2 & 0x80) != (reg1 & 0x80)) && ((reg2 & 0x80) != (reg0 & 0x80)));

//         if ((byte)reg1 > 0)
//             return ((byte)reg2 < (byte)reg0);
//         else
//             return ((byte)reg2 > (byte)reg0);
    }

    public static boolean pflag_nef_SUB_O8_FLAGS_reg0(int reg0)
    {
	return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_SUB_O8_FLAGS_reg0(int reg0)
    {
        return (((byte) reg0) < 0);
    }

    public static boolean zflag_nef_SUB_O8_FLAGS_reg0(int reg0)
    {
        return (((byte) reg0) == 0);
    }

    public static boolean aflag_nef_SUB_O16_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return ((((reg2 ^ reg1) ^ reg0) & 0x10) != 0);
    }

    public static boolean cflag_nef_SUB_O16_FLAGS_reg0(int reg0)
    {
        return ((reg0 & (~0xffff)) != 0);
    }

    public static boolean oflag_nef_SUB_O16_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return (((reg2 & 0x8000) != (reg1 & 0x8000)) && ((reg2 & 0x8000) != (reg0 & 0x8000)));

//         if ((short)reg1 > 0)
//             return ((short)reg2 < (short)reg0);
//         else
//             return ((short)reg2 > (short)reg0);
    }

    public static boolean pflag_nef_SUB_O16_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_SUB_O16_FLAGS_reg0(int reg0)
    {
        return (((short) reg0) < 0);
    }

    public static boolean zflag_nef_SUB_O16_FLAGS_reg0(int reg0)
    {
        return (((short) reg0) == 0);
    }

    public static boolean aflag_nef_SUB_O32_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return ((((reg2 ^ reg1) ^ reg0) & 0x10) != 0);
    }

    public static boolean cflag_nef_SUB_O32_FLAGS_reg2_reg1(int reg2, int reg1)
    {
        long result = (0xffffffffL & reg2) - (0xffffffffL & reg1);
        return (result & (~0xffffffffL)) != 0;
    }

    public static boolean oflag_nef_SUB_O32_FLAGS_reg0_reg1_reg2(int reg0, int reg1, int reg2)
    {
        return (((reg2 & 0x80000000) != (reg1 & 0x80000000)) && ((reg2 & 0x80000000) != (reg0 & 0x80000000)));

//         if (reg1 > 0)
//             return (reg2 < reg0);
//         else
//             return (reg2 > reg0);
    }

    public static boolean pflag_nef_SUB_O32_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_SUB_O32_FLAGS_reg0(int reg0)
    {
        return reg0 < 0;
    }

    public static boolean zflag_nef_SUB_O32_FLAGS_reg0(int reg0)
    {
        return reg0 == 0;
    }

    public static int reg0_nef_INC_reg0(int reg0)
    {
        return reg0 + 1;
    }

    public static boolean aflag_nef_INC_O8_FLAGS_reg0(int reg0)
    {
        return (reg0 & 0xf) == 0x0;
    }

    public static boolean oflag_nef_INC_O8_FLAGS_reg0(int reg0)
    {
        return (((byte) reg0) == ((byte) 0x80));
    }

    public static boolean pflag_nef_INC_O8_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_INC_O8_FLAGS_reg0(int reg0)
    {
        return (((byte) reg0) < 0);
    }

    public static boolean zflag_nef_INC_O8_FLAGS_reg0(int reg0)
    {
        return (((byte) reg0) == 0);
    }

    public static boolean aflag_nef_INC_O16_FLAGS_reg0(int reg0)
    {
        return ((((short) reg0) & 0xf) == 0x0);
    }

    public static boolean oflag_nef_INC_O16_FLAGS_reg0(int reg0)
    {
        return (((short) reg0) == ((short) 0x8000));
    }

    public static boolean pflag_nef_INC_O16_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_INC_O16_FLAGS_reg0(int reg0)
    {
        return (((short) reg0) < 0);
    }

    public static boolean zflag_nef_INC_O16_FLAGS_reg0(int reg0)
    {
        return (((short) reg0) == 0);
    }

    public static boolean aflag_nef_INC_O32_FLAGS_reg0(int reg0)
    {
        return ((reg0 & 0xf) == 0x0);
    }

    public static boolean oflag_nef_INC_O32_FLAGS_reg0(int reg0)
    {
        return (reg0 == 0x80000000);
    }

    public static boolean pflag_nef_INC_O32_FLAGS_reg0(int reg0)
    {
        return parityMap[reg0 & 0xff];
    }

    public static boolean sflag_nef_INC_O32_FLAGS_reg0(int reg0)
    {
        return (reg0 < 0);
    }

    public static boolean zflag_nef_INC_O32_FLAGS_reg0(int reg0)
    {
        return (reg0 == 0);
    }

    public static int reg0_nef_DEC_reg0(int reg0)
    {
        return reg0 - 1;
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -