package tools; import java.util.Map; import java.util.HashMap; import java.util.ArrayList; import java.util.Arrays; import java.util.Set; /** * @author Jiangcheng Oliver Chu */ public class JavaResource { public JavaResource() { super(); } public static ArrayList<String> getAll8BitRegisters() { ArrayList<String> registerList = new ArrayList<String>(); return registerList; } public static ArrayList<String> getAll32BitRegisters() { ArrayList<String> registerList = new ArrayList<String>(); return registerList; } public static ArrayList<String> getAll16BitRegisters() { ArrayList<String> registerList = new ArrayList<String>(); return registerList; } public static ArrayList<String> getAllRegisters() { ArrayList<String> registerList = new ArrayList<String>(); return registerList; } static ArrayList<String> getAllLoadPointerToSegRegCommands() { ArrayList<String> allLoadPtrToSegRegCommands = new ArrayList<String>(); return allLoadPtrToSegRegCommands; } static ArrayList<String> getAllJumps() { ArrayList<String> allJumps = new ArrayList<String>(); return allJumps; } private static ArrayList<String> getConditionalCommand( String commandHeader) { String[] conditionalEndings = {"o","no","b","nb","e","ne","be","a","s", "ns","p","np","l","ge","le","g"}; ArrayList<String> result = new ArrayList<String>(); for (String eachEnding : conditionalEndings) { result.add(commandHeader + eachEnding); } return result; } public static String convertRegisterToBinary(String registerName) { Map<String,String> regToBinMapping = new HashMap<String,String>(); if (!regToBinMapping.containsKey(registerName)) { return "ERROR"; } return regToBinMapping.get(registerName); } public static int determineInstructionSize(String firstOperand, String firstOperandType) { return -1; } /** * Given some immediate data, this method returns the number of bits * it will fit in: either a byte, word, or dword.<br /> * Note that 16-bit sized constant data sometimes is not allowed:<br /> * <br /> * <pre> * MOV AX,6000 ;6000 takes up only 16-bits. * ADD EAX,60 ;60 takes up 8-bits. * ADD EAX,6000 ;But now 6000 takes up 32-bits.</pre> * @param firstOperand * @return 8, 16, or 32 */ public static int determineImmediateSize(String operand) { return 0; } /** * Gets all the supported mnemonics. * This method does NOT contain zero-operand mnemonics.<br /> * See getZeroOperandMapping() for that. * @return all supported mnemonics with at least 1 operand */ public static ArrayList<String> getJavaKeywords() { ArrayList<String> kwdList = new ArrayList<String>(); String kwds = "abstract continue for new switch assert default" + " package synchronized boolean do if private this" + " break double implements protected throw byte" + " else import public throws case enum instanceof " + "return transient catch extends int short try char " + "final interface static void class finally long " + "strictfp volatile float native super while cout " + "cin printf puts gets struct class sub when repeat " + "end yield otherwise given true false True False " + "TRUE FALSE function of into yields erase all " + "except null NULL length size reverse len freeze " + "thaw unfreeze microwave slice sliceToEnd knife max " + "min signed unsigned using namespace asm goto " + "quadruple quadfloat in each repeat map filter reduce" + " inherit self __init__ except as with def uber var " + "list dict table object lambda defun define car cdr " + "cons first rest butfirst butrest butlast last nth " + "until nil NIL length size chr ord charNum begin rescue" + " toCharArray split strip trim reverse to_s elsif" + " and or xor not True False elif from as unless ensure" + " elseif then where"; String[] keywords = kwds.split(" "); kwdList.addAll(Arrays.asList(keywords)); return kwdList; } static ArrayList<String> getMnemonicSynonyms() { ArrayList<String> synonyms = new ArrayList<String>(); return synonyms; } /** * Use zeroOperandMapping.containsKey("key") to figure out if the "key" * is indeed a zero operand mnemonic. * @return */ public static Map<String,String> getZeroOperandMapping() { Map<String,String> zeroOperandMapping = new HashMap<String,String>(); return zeroOperandMapping; } public static ArrayList<String> getZeroOperandKeys() { Set keySet = getZeroOperandMapping().keySet(); ArrayList<String> keyList = new ArrayList<String>(); for (Object eachObj : keySet) { keyList.add( (String)eachObj ); } return keyList; } }