📄 wcetinstruction.java
字号:
// DADD = 99 case org.apache.bcel.Constants.DADD: wcet = -1; break; // ISUB = 100 case org.apache.bcel.Constants.ISUB: wcet = 1; break; // LSUB = 101 case org.apache.bcel.Constants.LSUB: wcet = -1; break; // FSUB = 102 case org.apache.bcel.Constants.FSUB: wcet = -1; break; // DSUB = 103 case org.apache.bcel.Constants.DSUB: wcet = -1; break; // IMUL = 104 case org.apache.bcel.Constants.IMUL: wcet = 35; break; // LMUL = 105 case org.apache.bcel.Constants.LMUL: wcet = -1; break; // FMUL = 106 case org.apache.bcel.Constants.FMUL: wcet = -1; break; // DMUL = 107 case org.apache.bcel.Constants.DMUL: wcet = -1; break; // IDIV = 108 case org.apache.bcel.Constants.IDIV: wcet = -1; break; // LDIV = 109 case org.apache.bcel.Constants.LDIV: wcet = -1; break; // FDIV = 110 case org.apache.bcel.Constants.FDIV: wcet = -1; break; // DDIV = 111 case org.apache.bcel.Constants.DDIV: wcet = -1; break; // IREM = 112 case org.apache.bcel.Constants.IREM: wcet = -1; break; // LREM = 113 case org.apache.bcel.Constants.LREM: wcet = -1; break; // FREM = 114 case org.apache.bcel.Constants.FREM: wcet = -1; break; // DREM = 115 case org.apache.bcel.Constants.DREM: wcet = -1; break; // INEG = 116 case org.apache.bcel.Constants.INEG: wcet = 4; break; // LNEG = 117 case org.apache.bcel.Constants.LNEG: wcet = -1; break; // FNEG = 118 case org.apache.bcel.Constants.FNEG: wcet = -1; break; // DNEG = 119 case org.apache.bcel.Constants.DNEG: wcet = -1; break; // ISHL = 120 case org.apache.bcel.Constants.ISHL: wcet = 1; break; // LSHL = 121 case org.apache.bcel.Constants.LSHL: wcet = -1; break; // ISHR = 122 case org.apache.bcel.Constants.ISHR: wcet = 1; break; // LSHR = 123 case org.apache.bcel.Constants.LSHR: wcet = -1; break; // IUSHR = 124 case org.apache.bcel.Constants.IUSHR: wcet = 1; break; // LUSHR = 125 case org.apache.bcel.Constants.LUSHR: wcet = -1; break; // IAND = 126 case org.apache.bcel.Constants.IAND: wcet = 1; break; // LAND = 127 case org.apache.bcel.Constants.LAND: wcet = -1; break; // IOR = 128 case org.apache.bcel.Constants.IOR: wcet = 1; break; // LOR = 129 case org.apache.bcel.Constants.LOR: wcet = -1; break; // IXOR = 130 case org.apache.bcel.Constants.IXOR: wcet = 1; break; // LXOR = 131 case org.apache.bcel.Constants.LXOR: wcet = -1; break; // IINC = 132 case org.apache.bcel.Constants.IINC: wcet = 8; break; // I2L = 133 case org.apache.bcel.Constants.I2L: wcet = -1; break; // I2F = 134 case org.apache.bcel.Constants.I2F: wcet = -1; break; // I2D = 135 case org.apache.bcel.Constants.I2D: wcet = -1; break; // L2I = 136 case org.apache.bcel.Constants.L2I: wcet = 3; break; // L2F = 137 case org.apache.bcel.Constants.L2F: wcet = -1; break; // L2D = 138 case org.apache.bcel.Constants.L2D: wcet = -1; break; // F2I = 139 case org.apache.bcel.Constants.F2I: wcet = -1; break; // F2L = 140 case org.apache.bcel.Constants.F2L: wcet = -1; break; // F2D = 141 case org.apache.bcel.Constants.F2D: wcet = -1; break; // D2I = 142 case org.apache.bcel.Constants.D2I: wcet = -1; break; // D2L = 143 case org.apache.bcel.Constants.D2L: wcet = -1; break; // D2F = 144 case org.apache.bcel.Constants.D2F: wcet = -1; break; // I2B = 145 case org.apache.bcel.Constants.I2B: wcet = -1; break; // INT2BYTE = 145 // Old notion // case org.apache.bcel.Constants.INT2BYTE : wcet = -1; break; // I2C = 146 case org.apache.bcel.Constants.I2C: wcet = 2; break; // INT2CHAR = 146 // Old notion // case org.apache.bcel.Constants.INT2CHAR : wcet = -1; break; // I2S = 147 case org.apache.bcel.Constants.I2S: wcet = -1; break; // INT2SHORT = 147 // Old notion // case org.apache.bcel.Constants.INT2SHORT : wcet = -1; break; // LCMP = 148 case org.apache.bcel.Constants.LCMP: wcet = -1; break; // FCMPL = 149 case org.apache.bcel.Constants.FCMPL: wcet = -1; break; // FCMPG = 150 case org.apache.bcel.Constants.FCMPG: wcet = -1; break; // DCMPL = 151 case org.apache.bcel.Constants.DCMPL: wcet = -1; break; // DCMPG = 152 case org.apache.bcel.Constants.DCMPG: wcet = -1; break; // IFEQ = 153 case org.apache.bcel.Constants.IFEQ: wcet = 4; break; // IFNE = 154 case org.apache.bcel.Constants.IFNE: wcet = 4; break; // IFLT = 155 case org.apache.bcel.Constants.IFLT: wcet = 4; break; // IFGE = 156 case org.apache.bcel.Constants.IFGE: wcet = 4; break; // IFGT = 157 case org.apache.bcel.Constants.IFGT: wcet = 4; break; // IFLE = 158 case org.apache.bcel.Constants.IFLE: wcet = 4; break; // IF_ICMPEQ = 159 case org.apache.bcel.Constants.IF_ICMPEQ: wcet = 4; break; // IF_ICMPNE = 160 case org.apache.bcel.Constants.IF_ICMPNE: wcet = 4; break; // IF_ICMPLT = 161 case org.apache.bcel.Constants.IF_ICMPLT: wcet = 4; break; // IF_ICMPGE = 162 case org.apache.bcel.Constants.IF_ICMPGE: wcet = 4; break; // IF_ICMPGT = 163 case org.apache.bcel.Constants.IF_ICMPGT: wcet = 4; break; // IF_ICMPLE = 164 case org.apache.bcel.Constants.IF_ICMPLE: wcet = 4; break; // IF_ACMPEQ = 165 case org.apache.bcel.Constants.IF_ACMPEQ: wcet = 4; break; // IF_ACMPNE = 166 case org.apache.bcel.Constants.IF_ACMPNE: wcet = 4; break; // GOTO = 167 case org.apache.bcel.Constants.GOTO: wcet = 4; break; // JSR = 168 case org.apache.bcel.Constants.JSR: wcet = -1; break; // RET = 169 case org.apache.bcel.Constants.RET: wcet = -1; // TODO: Should this be 1? break; // TABLESWITCH = 170 case org.apache.bcel.Constants.TABLESWITCH: wcet = -1; break; // LOOKUPSWITCH = 171 case org.apache.bcel.Constants.LOOKUPSWITCH: wcet = -1; break; // IRETURN = 172 case org.apache.bcel.Constants.IRETURN: wcet = 23; if (r > 3) { wcet += r - 3; } if (b > 10) { wcet += b - 10; } break; // LRETURN = 173 case org.apache.bcel.Constants.LRETURN: wcet = 25; if (r > 3) { wcet += r - 3; } if (b > 11) { wcet += b - 11; } break; // FRETURN = 174 case org.apache.bcel.Constants.FRETURN: wcet = 23; if (r > 3) { wcet += r - 3; } if (b > 10) { wcet += b - 10; } break; // DRETURN = 175 case org.apache.bcel.Constants.DRETURN: wcet = 25; if (r > 3) { wcet += r - 3; } if (b > 11) { wcet += b - 11; } break; // ARETURN = 176 case org.apache.bcel.Constants.ARETURN: wcet = 23; if (r > 3) { wcet += r - 3; } if (b > 10) { wcet += b - 10; } break; // RETURN = 177 case org.apache.bcel.Constants.RETURN: wcet = 21; if (r > 3) { wcet += r - 3; } if (b > 9) { wcet += b - 9; } break; // GETSTATIC = 178 case org.apache.bcel.Constants.GETSTATIC: wcet = 12 + 2 * r; break; // PUTSTATIC = 179 case org.apache.bcel.Constants.PUTSTATIC: wcet = 13 + r + w; break; // GETFIELD = 180 case org.apache.bcel.Constants.GETFIELD: wcet = 17 + 2 * r; break; // PUTFIELD = 181 case org.apache.bcel.Constants.PUTFIELD: wcet = 20 + r + w; break; // INVOKEVIRTUAL = 182 case org.apache.bcel.Constants.INVOKEVIRTUAL: wcet = 104 + 3 * r; if (r > 3) { wcet += r - 3; } if (r > 2) { wcet += r - 2; } if (b > 37) { wcet += b - 37; } break; // INVOKESPECIAL = 183 case org.apache.bcel.Constants.INVOKESPECIAL: wcet = 74 + r; if (r > 3) { wcet += r - 3; } if (r > 2) { wcet += r - 2; } if (b > 37) { wcet += b - 37; } break; // INVOKENONVIRTUAL = 183 // case org.apache.bcel.Constants.INVOKENONVIRTUAL : wcet = -1; break; // INVOKESTATIC = 184 case org.apache.bcel.Constants.INVOKESTATIC: wcet = 74 + r; if (r > 3) { wcet += r - 3; } if (r > 2) { wcet += r - 2; } if (b > 37) { wcet += b - 37; } break; // INVOKEINTERFACE = 185 case org.apache.bcel.Constants.INVOKEINTERFACE: wcet = 118 + 5 * r; if (r > 3) { wcet += r - 3; } if (r > 2) { wcet += r - 2; } if (b > 37) { wcet += b - 37; } break; // NEW = 187 case org.apache.bcel.Constants.NEW: wcet = -1; break; // NEWARRAY = 188 case org.apache.bcel.Constants.NEWARRAY: wcet = -1; break; // ANEWARRAY = 189 case org.apache.bcel.Constants.ANEWARRAY: wcet = -1; break; // ARRAYLENGTH = 190 case org.apache.bcel.Constants.ARRAYLENGTH: wcet = 10 + 2 * r; break; // ATHROW = 191 case org.apache.bcel.Constants.ATHROW: wcet = -1; break; // CHECKCAST = 192 case org.apache.bcel.Constants.CHECKCAST: wcet = -1; break; // INSTANCEOF = 193 case org.apache.bcel.Constants.INSTANCEOF: wcet = -1; break; // MONITORENTER = 194 case org.apache.bcel.Constants.MONITORENTER: wcet = 11; break; // MONITOREXIT = 195 case org.apache.bcel.Constants.MONITOREXIT: wcet = 16; // BCET: 10 break; // WIDE = 196 case org.apache.bcel.Constants.WIDE: wcet = -1; break; // MULTIANEWARRAY = 197 case org.apache.bcel.Constants.MULTIANEWARRAY: wcet = -1; break; // IFNULL = 198 case org.apache.bcel.Constants.IFNULL: wcet = 4; break; // IFNONNULL = 199 case org.apache.bcel.Constants.IFNONNULL: wcet = 4; break; // GOTO_W = 200 case org.apache.bcel.Constants.GOTO_W: wcet = -1; break; // JSR_W = 201 case org.apache.bcel.Constants.JSR_W: wcet = -1; break; // JOPSYS_RD = 209 case JOPSYS_RD: wcet = 4 + r; break; // JOPSYS_WR = 210 case JOPSYS_WR: wcet = 5 + w; break; // JOPSYS_RDMEM = 211 case JOPSYS_RDMEM: wcet = 4 + r; break; // JOPSYS_WRMEM = 212 case JOPSYS_WRMEM: wcet = 5 + w; break; // JOPSYS_RDINT = 213 case JOPSYS_RDINT: wcet = 3; break; // JOPSYS_WRINT = 214 case JOPSYS_WRINT: wcet = 3; break; // JOPSYS_GETSP = 215 case JOPSYS_GETSP: wcet = 3; break; // JOPSYS_SETSP = 216 case JOPSYS_SETSP: wcet = 4; break; // JOPSYS_GETVP = 217 case JOPSYS_GETVP: wcet = 1; break; // JOPSYS_SETVP = 218 case JOPSYS_SETVP: wcet = 2; break; // JOPSYS_INT2EXT = 219 case JOPSYS_INT2EXT: int wt = 0; if (w>8) wt = w-8; wcet = 14+r+ n*(23+wt); break; // JOPSYS_EXT2INT = 220 case JOPSYS_EXT2INT: int rt = 0; if (r>10) rt = r-10; wcet = 14+r+ n*(23+rt); break; // JOPSYS_NOP = 221 case JOPSYS_NOP: wcet = 1; break; default: wcet = -1; break; } // TODO: Add the JOP speciffic codes? return wcet; } /** * Check to see if there is a valid WCET count for the instruction. * * @param opcode * @return true if there is a valid wcet value */ static boolean wcetAvailable(int opcode) { if (getCycles(opcode, false, 0) == WCETNOTAVAILABLE) return false; else return true; } /** * Method load time on invoke or return if there is a cache miss (see pMiss). * * @see ms thesis p 232 */ public static int calculateB(boolean hit, int n) { int b = -1; if (n == -1) { System.err.println("n not set!"); System.exit(-1); } else { if (hit) { b = 4; } else { b = 6 + (n+1) * (2+c); } } return b; } // should be removed from WCETAnalyser: public static int calculateB(int x) { return -1; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -