import java.util.Scanner; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.Path; public class SimBase { /** Returns the bits of number between idx1 and idx2 as an integer */ public int get_bits(int number, int idx1, int idx2) { int low = idx1 < idx2 ? idx1 : idx2; int num = idx1 < idx2 ? idx2-idx1 : idx1-idx2; return (number >> low) & ((1<>= 1; } return ans; } /** Displays all processor state to command line */ public void showState() { System.out.println("----------------------------------------"); System.out.printf("last instruction = 0b%s (0x%02x)\n", toBin(_ir, 8), _ir); for(int i=0; i<4; i+=1) { System.out.printf("Register %s = 0b%s (0x%02x)\n", toBin(i, 2), toBin(R[i], 8), R[i]); } System.out.printf("next PC = 0b%s (0x%02x)\n", toBin(_pc, 8), _pc); System.out.println("//////////////////////// Memory \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"); for(int i=0; i<256; i+=16) { System.out.printf("0x%02x-%02x: ", i, i+15); for(int j=0; j<16; j+=1) { System.out.printf("%02x ", M[i+j]); } System.out.println(); boolean all0 = true; for(int j=i+16; j