/* --------------------------------------------------- Check for special problems in assembler program 1. Checks for cmp not using Data Reg --------------------------------------------------- */ import java.util.Scanner; import java.util.StringTokenizer; public class Parser { public static void main(String[] args) { Scanner in = new Scanner(System.in); String sline, opcode, o1, o2; String s; StringTokenizer t; int lineNo = 0; int index, i; while ( in.hasNextLine() ) { sline = in.nextLine().toLowerCase().trim(); lineNo++; if ( sline.length() == 0 ) continue; // System.out.println("Line = " + sline); if ( sline.charAt(0) == '*' || sline.charAt(0) == ';') { // System.out.println("Comment line = " + sline); continue; } /* =================================================== 1. Compare MUST use a data register =================================================== */ if ( (index = sline.indexOf("cmp")) != -1 ) { /* ----------------------------------- Find a space ----------------------------------- */ for (i = index; i < sline.length(); i++) { if ( sline.charAt(i) == ' ' || sline.charAt(i) == '\t' ) break; } s = sline.substring(i).trim(); // System.out.println(s); t = new StringTokenizer(s, ","); if ( t.countTokens() == 2 ) { o1 = t.nextToken().trim(); o2 = t.nextToken().trim(); boolean problem = true; if ( o1.charAt(0) == 'd' && (o1.charAt(1) - '0' >= 0 && o1.charAt(1) - '0' <= 7) ) problem = false; if ( o2.charAt(0) == 'd' && (o2.charAt(1) - '0' >= 0 && o2.charAt(1) - '0' <= 7) ) problem = false; if ( problem ) { // System.out.println("Problem: " + sline); System.out.println(lineNo + ": " + sline); System.exit(-1); } } } } System.out.println("0"); System.exit(0); } }