X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=mjc2wsl.git;a=blobdiff_plain;f=src%2Fcom%2Fqumaster%2Ftransformations%2Fmjc2wsl%2FMicroJavaInput.java;fp=src%2Fcom%2Fqumaster%2Ftransformations%2Fmjc2wsl%2FMicroJavaInput.java;h=0000000000000000000000000000000000000000;hp=a981a89e4020fe94a3c290eb6c376ef3b57a4c7c;hb=215cc953e6fd7896f0876c66d0de1428d8d1ba7b;hpb=c7a64b0d1297957012f49406eb5d918f7591244a diff --git a/src/com/qumaster/transformations/mjc2wsl/MicroJavaInput.java b/src/com/qumaster/transformations/mjc2wsl/MicroJavaInput.java deleted file mode 100644 index a981a89..0000000 --- a/src/com/qumaster/transformations/mjc2wsl/MicroJavaInput.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.qumaster.transformations.mjc2wsl; - -/* - Copyright (C) 2014 Doni Pracner - - This file is part of mjc2wsl. - - mjc2wsl 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. - - mjc2wsl 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 mjc2wsl. If not, see . - */ -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.HashMap; - -public class MicroJavaInput { - private HashMap opMap; - public String opCodeFile = "mj-bytecodes.properties"; - private InputStream mainIn; - int counter = -1; - - int mainAdr; - - int numberOfWords; - private int codesize; - - public MicroJavaInput() { - - } - - public int get() { - int res = -1; - try { - res = mainIn.read(); - if (res >= 0) - res = res << 24 >>> 24; - } catch (IOException ex) { - ex.printStackTrace(); - } - counter++; - return res; - } - - public int get2() { - return (get() * 256 + get()) << 16 >> 16; - } - - public int get4() { - return (get2() << 16) + (get2() << 16 >>> 16); - } - - public void processHeader(mjc2wsl mjc2wsl) throws Exception { - byte m = (byte) get(); - byte j = (byte) get(); - if (m != 'M' || j != 'J') - throw new Exception("Wrong start of bytecode file"); - codesize = get4(); - setNumberOfWords(get4()); - setMainAdr(get4()); - } - - public void setStream(InputStream ins) { - mainIn = ins; - } - - public int getCounter() { - return counter; - } - - public int getCodesize() { - return codesize; - } - - public int getMainAdr(mjc2wsl mjc2wsl) { - return mainAdr; - } - - public int getNumberOfWords(mjc2wsl mjc2wsl) { - return numberOfWords; - } - - void setNumberOfWords(int numberOfWords) { - this.numberOfWords = numberOfWords; - } - - void setMainAdr(int mainAdr) { - this.mainAdr = mainAdr; - } - - String getRelationFor(int opcode) throws Exception { - switch (opcode) { - case mjc2wsl.jeq: - return "="; - case mjc2wsl.jne: - return "<>"; - case mjc2wsl.jlt: - return "<"; - case mjc2wsl.jle: - return "<="; - case mjc2wsl.jgt: - return ">"; - case mjc2wsl.jge: - return ">="; - } - throw new Exception("Wrong opcode for a relation"); - } - - boolean isJumpCode(int opcode) { - return (opcode >= mjc2wsl.jmp) && (opcode <= mjc2wsl.jge); - } - - private HashMap getOpMap() { - if (opMap == null) { - opMap = new HashMap(60, 0.98f); - try { - BufferedReader in = new BufferedReader(new InputStreamReader( - getClass().getResourceAsStream(opCodeFile))); - String str = in.readLine(); - while (str != null) { - String[] ss = str.split("="); - opMap.put(Integer.parseInt(ss[0]), ss[1]); - str = in.readLine(); - } - in.close(); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - return opMap; - } - - public String getOpString(int op) { - return getOpMap().get(op); - } - - public String describeOpCode(int op) { - return op + " (" + getOpString(op) + ")"; - } - -} \ No newline at end of file