/* This file is part of jpcsp. Jpcsp is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Jpcsp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Jpcsp. If not, see <http://www.gnu.org/licenses/>. */ package jpcsp.Allegrex.compiler; import org.objectweb.asm.MethodVisitor; /** * @author gid15 * */ public interface ICompilerContext { public void compileInterpreterInstruction(); public void compileRTRSIMM(String method, boolean signedImm); public void compileRDRT(String method); public void compileFDFSFT(String method); public void compileSyscall(); public void loadRs(); public void loadRt(); public void loadRd(); public void loadRegister(int reg); public void loadFs(); public void loadFt(); public void loadFd(); public void loadFRegister(int reg); public void loadVs(int n); public void loadVs(int vsize, int n); public void loadVs(int vsize, int vs, int n); public void loadVsInt(int n); public void loadVsInt(int vsize, int n); public void loadVsInt(int vsize, int vs, int n); public void loadVt(int n); public void loadVt(int vsize, int n); public void loadVt(int vsize, int vt, int n); public void loadVtInt(int n); public void loadVtInt(int vsize, int n); public void loadVtInt(int vsize, int vt, int n); public void loadVd(int n); public void loadVd(int vize, int n); public void loadVd(int vize, int vd, int n); public void loadVdInt(int n); public void loadVdInt(int vsize, int n); public void loadVdInt(int vsize, int vd, int n); public void loadHilo(); public void loadSaValue(); public void loadFCr(); public void loadFcr31c(); public void loadVcrCc(int cc); public void storeRd(); public void storeRt(); public void storeRd(int constantValue); public void storeRt(int constantValue); public void storeFd(); public void storeFt(); public void storeVd(int n); public void storeVd(int vsize, int n); public void storeVd(int vsize, int vd, int n); public void storeVdInt(int n); public void storeVdInt(int vsize, int n); public void storeVdInt(int vsize, int vd, int n); public void storeVt(int n); public void storeVt(int vsize, int n); public void storeVt(int vsize, int vt, int n); public void storeVtInt(int n); public void storeVtInt(int vsize, int n); public void storeVtInt(int vsize, int vt, int n); public void storeRegister(int reg, int constantValue); public void storeHilo(); public void storeFCr(); public void storeFcr31c(); public void storeVcrCc(int cc); public void prepareRdForStore(); public void prepareRtForStore(); public void prepareFdForStore(); public void prepareFtForStore(); public void prepareVdForStore(int n); public void prepareVdForStore(int vsize, int n); public void prepareVdForStore(int vsize, int vd, int n); public void prepareVdForStoreInt(int n); public void prepareVdForStoreInt(int vsize, int n); public void prepareVdForStoreInt(int vsize, int vd, int n); public void prepareVtForStore(int n); public void prepareVtForStore(int vsize, int n); public void prepareVtForStore(int vsize, int vt, int n); public void prepareVtForStoreInt(int n); public void prepareVtForStoreInt(int vsize, int n); public void prepareVtForStoreInt(int vsize, int vt, int n); public void prepareHiloForStore(); public void prepareFCrForStore(); public void prepareFcr31cForStore(); public void prepareVcrCcForStore(int cc); public int getRsRegisterIndex(); public int getRtRegisterIndex(); public int getRdRegisterIndex(); public int getFsRegisterIndex(); public int getFtRegisterIndex(); public int getFdRegisterIndex(); public int getVsRegisterIndex(); public int getVtRegisterIndex(); public int getVdRegisterIndex(); public int getVsize(); public int getCrValue(); public int getSaValue(); public boolean isRdRegister0(); public boolean isRtRegister0(); public boolean isRsRegister0(); public int getImm16(boolean signedImm); public int getImm14(boolean signedImm); public int getImm7(); public int getImm5(); public int getImm4(); public int getImm3(); public void loadImm(int imm); public void loadImm16(boolean signedImm); public MethodVisitor getMethodVisitor(); public void memRead32(int registerIndex, int offset); public void memRead16(int registerIndex, int offset); public void memRead8(int registerIndex, int offset); public void memWrite32(int registerIndex, int offset); public void memWrite16(int registerIndex, int offset); public void memWrite8(int registerIndex, int offset); public void prepareMemWrite32(int registerIndex, int offset); public void prepareMemWrite16(int registerIndex, int offset); public void prepareMemWrite8(int registerIndex, int offset); public void memWriteZero8(int registerIndex, int offset); public void convertUnsignedIntToLong(); public void startPfxCompiled(); public void startPfxCompiled(boolean isFloat); public void endPfxCompiled(); public void endPfxCompiled(boolean isFloat); public void endPfxCompiled(int vsize); public void endPfxCompiled(int vsize, boolean isFloat); public void endPfxCompiled(int vsize, boolean isFloat, boolean doFlush); public void flushPfxCompiled(int vsize, int vd, boolean isFloat); public boolean isPfxConsumed(int flag); public void loadTmp1(); public void loadTmp2(); public void loadLTmp1(); public void loadFTmp1(); public void loadFTmp2(); public void loadFTmp3(); public void loadFTmp4(); public void storeTmp1(); public void storeTmp2(); public void storeLTmp1(); public void storeFTmp1(); public void storeFTmp2(); public void storeFTmp3(); public void storeFTmp4(); public VfpuPfxSrcState getPfxsState(); public VfpuPfxSrcState getPfxtState(); public VfpuPfxDstState getPfxdState(); public boolean isVsVdOverlap(); public boolean isVtVdOverlap(); public void compileVFPUInstr(Object cstBefore, int opcode, String mathFunction); public boolean compileVFPULoad(int registerIndex, int offset, int vt, int count); public boolean compileVFPUStore(int registerIndex, int offset, int vt, int count); public CodeInstruction getCodeInstruction(); public CodeInstruction getCodeInstruction(int address); public void skipInstructions(int numberInstructionsToBeSkipped, boolean skipDelaySlot); public boolean compileSWsequence(int baseRegister, int[] offsets, int[] registers); public boolean compileLWsequence(int baseRegister, int[] offsets, int[] registers); public void storePc(); public void loadLocalVar(int localVar); }