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

📄 ucodestaticmethods.java

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

//     public static Segment es_hef_STORE1_ES_ldtr_gdtr_reg1(Segment ldtr, Segment gdtr, int reg1)
//     {
// 	reg1 &= 0xffff;
// 	if (reg1 < 0x4)
// 	    return SegmentFactory.NULL_SEGMENT;

//         try {
//             return cpu.getSegment(reg1, ldtr, gdtr);
//         } catch (ProcessorException e) {
//             throw new IllegalStateException(e.toString());
//         }
//     }

//     public static Segment cs_hef_STORE1_CS_ldtr_gdtr_reg1(Segment ldtr, Segment gdtr, int reg1)
//     {
//         cs.setSelector(0xffff & reg1);
//         return cs;
//     }

//     public static Segment ss_hef_STORE1_SS_ldtr_gdtr_reg1(Segment ldtr, Segment gdtr, int reg1)
//     {
// 	reg1 &= 0xffff;
// 	if (reg1 < 0x4)
// 	    throw exceptionGP;

//         try {
//             return cpu.getSegment(reg1, ldtr, gdtr);
//         } catch (ProcessorException e) {
//             throw new IllegalStateException(e.toString());
//         }
//     }

//     public static Segment ds_hef_STORE1_DS_ldtr_gdtr_reg1(Segment ldtr, Segment gdtr, int reg1)
//     {
// 	reg1 &= 0xffff;
// 	if (reg1 < 0x4)
// 	    return SegmentFactory.NULL_SEGMENT;

//         try {
//             return cpu.getSegment(reg1, ldtr, gdtr);
//         } catch (ProcessorException e) {
//             throw new IllegalStateException(e.toString());
//         }
//     }

//     public static Segment fs_hef_STORE1_FS_ldtr_gdtr_reg1(Segment ldtr, Segment gdtr, int reg1)
//     {
// 	reg1 &= 0xffff;
// 	if (reg1 < 0x4)
// 	    return SegmentFactory.NULL_SEGMENT;

//         try {
//             return cpu.getSegment(reg1, ldtr, gdtr);
//         } catch (ProcessorException e) {
//             throw new IllegalStateException(e.toString());
//         }
//     }

//     public static Segment gs_hef_STORE1_GS_ldtr_gdtr_reg1(Segment ldtr, Segment gdtr, int reg1)
//     {
// 	reg1 &= 0xffff;
// 	if (reg1 < 0x4)
// 	    return SegmentFactory.NULL_SEGMENT;

//         try {
//             return cpu.getSegment(reg1, ldtr, gdtr);
//         } catch (ProcessorException e) {
//             throw new IllegalStateException(e.toString());
//         }
//     }

    public static void memorywrite_hef_STORE1_MEM_BYTE_seg0_addr0_reg1(Segment seg0, int addr0, int reg1)
    {
        seg0.setByte(addr0, (byte)reg1);
    }

    public static void memorywrite_hef_STORE1_MEM_WORD_seg0_addr0_reg1(Segment seg0, int addr0, int reg1)
    {
        seg0.setWord(addr0, (short)reg1);
    }

    public static void memorywrite_hef_STORE1_MEM_DWORD_seg0_addr0_reg1(Segment seg0, int addr0, int reg1)
    {
        seg0.setDoubleWord(addr0, reg1);
    }

    public static int addr0_nef_ADDR_AX_addr0_eax(int addr0, int eax)
    {
        return addr0 + ((short) eax);
    }

    public static int addr0_nef_ADDR_CX_addr0_ecx(int addr0, int ecx)
    {
        return addr0 + ((short) ecx);
    }

    public static int addr0_nef_ADDR_DX_addr0_edx(int addr0, int edx)
    {
        return addr0 + ((short) edx);
    }

    public static int addr0_nef_ADDR_BX_addr0_ebx(int addr0, int ebx)
    {
        return addr0 + ((short) ebx);
    }

    public static int addr0_nef_ADDR_SP_addr0_esp(int addr0, int esp)
    {
        return addr0 + ((short) esp);
    }

    public static int addr0_nef_ADDR_BP_addr0_ebp(int addr0, int ebp)
    {
        return addr0 + ((short) ebp);
    }

    public static int addr0_nef_ADDR_SI_addr0_esi(int addr0, int esi)
    {
        return addr0 + ((short) esi);
    }

    public static int addr0_nef_ADDR_DI_addr0_edi(int addr0, int edi)
    {
        return addr0 + ((short) edi);
    }

    public static int addr0_nef_ADDR_EAX_addr0_eax(int addr0, int eax)
    {
        return addr0 + eax;
    }

    public static int addr0_nef_ADDR_ECX_addr0_ecx(int addr0, int ecx)
    {
        return addr0 + ecx;
    }

    public static int addr0_nef_ADDR_EDX_addr0_edx(int addr0, int edx)
    {
        return addr0 + edx;
    }

    public static int addr0_nef_ADDR_EBX_addr0_ebx(int addr0, int ebx)
    {
        return addr0 + ebx;
    }

    public static int addr0_nef_ADDR_ESP_addr0_esp(int addr0, int esp)
    {
        return addr0 + esp;
    }

    public static int addr0_nef_ADDR_EBP_addr0_ebp(int addr0, int ebp)
    {
        return addr0 + ebp;
    }

    public static int addr0_nef_ADDR_ESI_addr0_esi(int addr0, int esi)
    {
        return addr0 + esi;
    }

    public static int addr0_nef_ADDR_EDI_addr0_edi(int addr0, int edi)
    {
        return addr0 + edi;
    }

    public static int addr0_nef_ADDR_2EAX_addr0_eax(int addr0, int eax)
    {
        return addr0 + (eax << 1);
    }

    public static int addr0_nef_ADDR_2ECX_addr0_ecx(int addr0, int ecx)
    {
        return addr0 + (ecx << 1);
    }

    public static int addr0_nef_ADDR_2EDX_addr0_edx(int addr0, int edx)
    {
        return addr0 + (edx << 1);
    }

    public static int addr0_nef_ADDR_2EBX_addr0_ebx(int addr0, int ebx)
    {
        return addr0 + (ebx << 1);
    }

    public static int addr0_nef_ADDR_2ESP_addr0_esp(int addr0, int esp)
    {
        return addr0 + (esp << 1);
    }

    public static int addr0_nef_ADDR_2EBP_addr0_ebp(int addr0, int ebp)
    {
        return addr0 + (ebp << 1);
    }

    public static int addr0_nef_ADDR_2ESI_addr0_esi(int addr0, int esi)
    {
        return addr0 + (esi << 1);
    }

    public static int addr0_nef_ADDR_2EDI_addr0_edi(int addr0, int edi)
    {
        return addr0 + (edi << 1);
    }

    public static int addr0_nef_ADDR_4EAX_addr0_eax(int addr0, int eax)
    {
        return addr0 + (eax << 2);
    }

    public static int addr0_nef_ADDR_4ECX_addr0_ecx(int addr0, int ecx)
    {
        return addr0 + (ecx << 2);
    }

    public static int addr0_nef_ADDR_4EDX_addr0_edx(int addr0, int edx)
    {
        return addr0 + (edx << 2);
    }

    public static int addr0_nef_ADDR_4EBX_addr0_ebx(int addr0, int ebx)
    {
        return addr0 + (ebx << 2);
    }

    public static int addr0_nef_ADDR_4ESP_addr0_esp(int addr0, int esp)
    {
        return addr0 + (esp << 2);
    }

    public static int addr0_nef_ADDR_4EBP_addr0_ebp(int addr0, int ebp)
    {
        return addr0 + (ebp << 2);
    }

    public static int addr0_nef_ADDR_4ESI_addr0_esi(int addr0, int esi)
    {
        return addr0 + (esi << 2);
    }

    public static int addr0_nef_ADDR_4EDI_addr0_edi(int addr0, int edi)
    {
        return addr0 + (edi << 2);
    }

    public static int addr0_nef_ADDR_8EAX_addr0_eax(int addr0, int eax)
    {
        return addr0 + (eax << 3);
    }

    public static int addr0_nef_ADDR_8ECX_addr0_ecx(int addr0, int ecx)
    {
        return addr0 + (ecx << 3);
    }

    public static int addr0_nef_ADDR_8EDX_addr0_edx(int addr0, int edx)
    {
        return addr0 + (edx << 3);
    }

    public static int addr0_nef_ADDR_8EBX_addr0_ebx(int addr0, int ebx)
    {
        return addr0 + (ebx << 3);
    }

    public static int addr0_nef_ADDR_8ESP_addr0_esp(int addr0, int esp)
    {
        return addr0 + (esp << 3);
    }

    public static int addr0_nef_ADDR_8EBP_addr0_ebp(int addr0, int ebp)
    {
        return addr0 + (ebp << 3);
    }

    public static int addr0_nef_ADDR_8ESI_addr0_esi(int addr0, int esi)
    {
        return addr0 + (esi << 3);
    }

    public static int addr0_nef_ADDR_8EDI_addr0_edi(int addr0, int edi)
    {
        return addr0 + (edi << 3);
    }

    public static int addr0_nef_ADDR_IB_addr0_immediate(int addr0, int immediate)
    {
        return addr0 + ((byte) immediate);
    }

    public static int addr0_nef_ADDR_IW_addr0_immediate(int addr0, int immediate)
    {
        return addr0 + ((short) immediate);
    }

    public static int addr0_nef_ADDR_ID_addr0_immediate(int addr0, int immediate)
    {
        return addr0 + immediate;
    }

    public static int addr0_nef_ADDR_MASK16_addr0(int addr0)
    {
        return addr0 & 0xffff;
    }

    public static int addr0_nef_ADDR_uAL_addr0_eax(int addr0, int eax)
    {
        return addr0 + (0xff & eax);
    }

    public static int addr0_nef_ADDR_REG1_addr0_reg1(int addr0, int reg1)
    {
        return addr0 + reg1;
    }

    public static int addr0_nef_MEM_RESET()
    {
        return 0;
    }

    public static Segment seg0_nef_MEM_RESET()
    {
        return null;
    }

    public static int reg0_nef_SIGN_EXTEND_8_16_reg0(int reg0)
    {
        return 0xffff & ((byte)reg0);
    }

    public static int reg0_nef_SIGN_EXTEND_8_32_reg0(int reg0)
    {
        return (int)((byte)reg0);
    }

    public static int reg0_nef_SIGN_EXTEND_16_32_reg0(int reg0)
    {
        return (int)((short)reg0);
    }

    public static int eip_nef_JUMP_O8_cs_eip_reg0(Segment cs, int eip, int reg0) throws ProcessorException
    {
// 	if ((byte)reg0 == 0)
// 	    return eip;

	eip = eip + (byte)reg0;
	cs.checkAddress(eip);
	return eip;
    }

    public static int eip_nef_JUMP_O16_cs_eip_reg0(Segment cs, int eip, int reg0) throws ProcessorException
    {
	eip = (eip + reg0) & 0xffff;
	cs.checkAddress(eip);
	return eip;
    }

    public static int eip_nef_JUMP_O32_cs_eip_reg0(Segment cs, int eip, int reg0) throws ProcessorException
    {
	eip += reg0;
	cs.checkAddress(eip);
	return eip;
    }

    public static int eip_nef_JUMP_ABS_O32_cs_reg0(Segment cs, int reg0) throws ProcessorException
    {
	cs.checkAddress(reg0);
	return reg0;
    }

    public static int ecx_nef_LOOP_CX_ecx(int ecx)
    {
        return (ecx & ~0xffff) | ((ecx - 1) & 0xffff); 
    }

    public static int eip_nef_LOOP_CX_cs_eip_reg0_ecx(Segment cs, int eip, int reg0, int ecx) throws ProcessorException
    {
        if ((0xffff & (ecx - 1)) != 0) 
	    return eip_nef_JUMP_O8_cs_eip_reg0(cs, eip, reg0);
	else
	    return eip;
    }

    public static int ecx_nef_LOOP_ECX_ecx(int ecx)
    {
        return ecx - 1; 
    }

    public static int eip_nef_LOOP_ECX_cs_eip_reg0_ecx(Segment cs, int eip, int reg0, int ecx) throws ProcessorException
    {
        if ((ecx - 1) != 0) 
	    return eip_nef_JUMP_O8_cs_eip_reg0(cs, eip, reg0);
	else
	    return eip;
    }

    public static int eip_nef_JO_O8_cs_eip_reg0_oflag(Segment cs, int eip, int reg0, boolean oflag) throws ProcessorException
    {
	if (oflag)
            return eip_nef_JUMP_O8_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JO_O16_cs_eip_reg0_oflag(Segment cs, int eip, int reg0, boolean oflag) throws ProcessorException
    {
 	if (oflag)
            return eip_nef_JUMP_O16_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JO_O32_cs_eip_reg0_oflag(Segment cs, int eip, int reg0, boolean oflag) throws ProcessorException
    {
 	if (oflag)
            return eip_nef_JUMP_O32_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JNO_O8_cs_eip_reg0_oflag(Segment cs, int eip, int reg0, boolean oflag) throws ProcessorException
    {
 	if (!oflag)
            return eip_nef_JUMP_O8_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JNO_O16_cs_eip_reg0_oflag(Segment cs, int eip, int reg0, boolean oflag) throws ProcessorException
    {
	if (!oflag)
            return eip_nef_JUMP_O16_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JNO_O32_cs_eip_reg0_oflag(Segment cs, int eip, int reg0, boolean oflag) throws ProcessorException
    {
	if (!oflag)
            return eip_nef_JUMP_O32_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JC_O8_cs_eip_reg0_cflag(Segment cs, int eip, int reg0, boolean cflag) throws ProcessorException
    {
	if (cflag)
            return eip_nef_JUMP_O8_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JC_O16_cs_eip_reg0_cflag(Segment cs, int eip, int reg0, boolean cflag) throws ProcessorException
    {
	if (cflag)
            return eip_nef_JUMP_O16_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JC_O32_cs_eip_reg0_cflag(Segment cs, int eip, int reg0, boolean cflag) throws ProcessorException
    {
	if (cflag)
            return eip_nef_JUMP_O32_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JNC_O8_cs_eip_reg0_cflag(Segment cs, int eip, int reg0, boolean cflag) throws ProcessorException
    {
 	if (!cflag)
            return eip_nef_JUMP_O8_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

    public static int eip_nef_JNC_O16_cs_eip_reg0_cflag(Segment cs, int eip, int reg0, boolean cflag) throws ProcessorException
    {
 	if (!cflag)
            return eip_nef_JUMP_O16_cs_eip_reg0(cs, eip, reg0);
        return eip;
    }

⌨️ 快捷键说明

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