128: if (inst >= 0xF0000000) { // BLX(1)
129: nextPC += getInstField(0x01000000, 24) << 1;
130: // adjust for Thumb mode (on two bytes boundary)
163: // OP1 register
164: rn = getInstField(0x000F0000, 16);
165: usereg = REGBIT(rn);
168: if (!(inst & 0x02000000)) {
169: rm = getInstField(0x0000000F, 0);
170: usereg |= REGBIT(rm);
171: if (inst & 0x00000010) // shift length register
172: usereg |= REGBIT(getInstField(0x00000F00, 8));
173: }
197: // base register
198: rn = getInstField(0x000F0000, 16);
199: usereg = REGBIT(rn);
203: if (inst & 0x02000000) {
204: roff = getInstField(0x0000000F, 0);
205: usereg |= REGBIT(roff);
228: // memory base address
229: baddr = getRegister(getInstField(0x000F0000, 16));
230:
269: // memory base address
270: baddr = getRegister(getInstField(0x000F0000, 16));
271:
297:
298: cond = getInstField(0x0F00, 8);
299:
329: }
330: inst = getInstField(0x0078, 3);
331: if (inst == regPC) {
366:
367: dreg = getInstField(0x0007, 0);
368: if (inst & 0x0080) dreg |= 0x8; // Hi register
370:
371: mreg = getInstField(0x0078, 3); // including Hi register
372: nextPC = getRegister(mreg) & ~(tINSTSZ - 1);
476: // check the conditional execution
477: if (!checkCond(getInstField(0xF0000000, 28))) goto EXIT;
478: tab = (INST_T*)instArm;