X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2FJavaSourceCompiler.java;h=b581d22f45b81ec24f2b0375cc929086071e724f;hp=d71bee87e7d163f093c9cc9a365d2cf33b207f66;hb=034a42fa65955289442614ef9914e5474fac62aa;hpb=40de2c62cb907622ff6f5fcdbeccc8773a1d7b2d diff --git a/src/org/ibex/nestedvm/JavaSourceCompiler.java b/src/org/ibex/nestedvm/JavaSourceCompiler.java index d71bee8..b581d22 100644 --- a/src/org/ibex/nestedvm/JavaSourceCompiler.java +++ b/src/org/ibex/nestedvm/JavaSourceCompiler.java @@ -47,7 +47,7 @@ public class JavaSourceCompiler extends Compiler { if (packageName != null) p("package " + packageName + ";"); if(runtimeStats) p("import java.util.*;"); p(); - p("public class " + className + " extends " + runtimeClass + " {"); + p("public final class " + className + " extends " + runtimeClass + " {"); indent++; p("/* program counter */"); @@ -116,23 +116,20 @@ public class JavaSourceCompiler extends Compiler { // Constructor p("public " + className + "() {"); indent++; - p("super(" + pageSize + "," + totalPages + "," + (fastMem?"false":"true") + ");"); - p("entryPoint = " + toHex(elf.header.entry) + ";"); - if(userInfo != null) { - p("userInfoBase=" + toHex(userInfo.addr) + ";"); - p("userInfoSize=" + userInfo.size + ";"); - } - p("gp = " + toHex(gp.addr) + ";"); - if(onePage) - p("brkAddr = " + toHex((highestAddr+4095)&~4095) + ";"); - else - p("brkAddr = " + toHex((highestAddr+pageSize-1)&~(pageSize-1)) + ";"); + p("super(" + pageSize + "," + totalPages + ");"); pblock(inits); - p("state = INITIALIZED;"); indent--; p("}"); p(); + p("protected int entryPoint() { return " + toHex(elf.header.entry) + "; }"); + p("protected int heapStart() { return " + toHex(highestAddr) + "; }"); + p("protected int gp() { return " + toHex(gp.addr) + "; }"); + if(userInfo != null) { + p("protected int userInfoBase() { return " + toHex(userInfo.addr) + "; }"); + p("protected int userInfoSize() { return " + toHex(userInfo.size) + "; }"); + } + // main() function p("public static void main(String[] args) throws Exception {"); indent++; @@ -156,14 +153,12 @@ public class JavaSourceCompiler extends Compiler { p("pc=state.pc;"); indent--; p("}"); - p("protected CPUState getCPUState() {"); + p("protected void getCPUState(CPUState state) {"); indent++; - p("CPUState state = new CPUState();"); for(int i=1;i<32;i++) p("state.r[" + i + "]=r" + i+ ";"); for(int i=0;i<32;i++) p("state.f[" + i + "]=f" + i +";"); p("state.hi=hi; state.lo=lo; state.fcsr=fcsr;"); p("state.pc=pc;"); - p("return state;"); indent--; p("}"); p();