📄 bytecodefragments.java
字号:
new Integer(JavaOpcode.INVOKEVIRTUAL), method("setSignFlag", Boolean.TYPE) }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_TFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsTrap") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IFLAG] = new Object[] { new Integer(JavaOpcode.DUP), new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.DUP_X2), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsInterruptEnable"), new Integer(JavaOpcode.PUTFIELD), field("eflagsInterruptEnableSoon") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_DFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsDirection") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_OFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.INVOKEVIRTUAL), method("setOverflowFlag", Boolean.TYPE) }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IOPL] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsIOPrivilegeLevel") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_NTFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsNestedTask") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_RFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsResume") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_VMFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsVirtual8086Mode") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_ACFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsAlignmentCheck") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_VIFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsVirtualInterrupt") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_VIPFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsVirtualInterruptPending") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IDFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("eflagsID") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_ES] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("es") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_CS] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("cs") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_SS] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("ss") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_DS] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("ds") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_FS] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("fs") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_GS] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("gs") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IDTR] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("idtr") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_GDTR] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("gdtr") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_LDTR] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("ldtr") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_TSS] = new Object[] { new Integer(JavaOpcode.ALOAD_1), new Integer(JavaOpcode.SWAP), new Integer(JavaOpcode.PUTFIELD), field("tss") }; popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_ADDR0] = new Object[] { new Integer(JavaOpcode.POP) }; } protected BytecodeFragments() {} public static Object[] pushCode(int element) { Object[] temp = pushCodeArray[element]; if (temp == null) throw new IllegalStateException("Non existant CPU Element: "+element); return temp; } public static Object[] popCode(int element) { Object[] temp = popCodeArray[element]; if (temp == null) throw new IllegalStateException("Non existant CPU Element: "+element); return temp; } public static Object field(String name) { try { return new ConstantPoolSymbol(Processor.class.getDeclaredField(name)); } catch (NoSuchFieldException e) { throw new IllegalStateException(e); } } public static Object field(Class cls, String name) { try { return new ConstantPoolSymbol(cls.getDeclaredField(name)); } catch (NoSuchFieldException e) { throw new IllegalStateException(e); } } public static Object method(String name) { return method(name, new Class[0]); } public static Object method(String name, Class arg) { return method(name, new Class[]{arg}); } public static Object method(String name, Class arg0, Class arg1) { return method(name, new Class[]{arg0, arg1}); } public static Object method(String name, Class[] args) { try { return new ConstantPoolSymbol(Processor.class.getDeclaredMethod(name, args)); } catch (NoSuchMethodException e) { throw new IllegalStateException(e); } } public static Object method(Class cls, String name) { return method(cls, name, new Class[0]); } public static Object method(Class cls, String name, Class arg) { return method(cls, name, new Class[]{arg}); } public static Object method(Class cls, String name, Class arg0, Class arg1) { return method(cls, name, new Class[]{arg0, arg1}); } public static Object method(Class cls, String name, Class arg0, Class arg1, Class arg2) { return method(cls, name, new Class[]{arg0, arg1, arg2}); } public static Object method(Class cls, String name, Class[] args) { try { return new ConstantPoolSymbol(cls.getMethod(name, args)); } catch (NoSuchMethodException e) { throw new IllegalStateException(e); } } public static Object integer(int value) { return new ConstantPoolSymbol(new Integer(value)); } public static Object longint(long value) { return new ConstantPoolSymbol(new Long(value)); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -