1 %verify "executed" 2 %verify "forward and backward" 3 /* 4 * Unconditional branch, 8-bit offset. 5 * 6 * The branch distance is a signed code-unit offset, which we need to 7 * double to get a byte offset. 8 */ 9 /* goto +AA */ 10 mov r0, rINST, lsl #16 @ r0<- AAxx0000 11 movs r9, r0, asr #24 @ r9<- ssssssAA (sign-extended) 12 mov r9, r9, lsl #1 @ r9<- byte offset 13 bmi common_backwardBranch @ backward branch, do periodic checks 14 #if defined(WITH_JIT) 15 GET_JIT_PROF_TABLE(r0) 16 FETCH_ADVANCE_INST_RB(r9) @ update rPC, load rINST 17 cmp r0,#0 18 bne common_updateProfile 19 GET_INST_OPCODE(ip) @ extract opcode from rINST 20 GOTO_OPCODE(ip) @ jump to next instruction 21 #else 22 FETCH_ADVANCE_INST_RB(r9) @ update rPC, load rINST 23 GET_INST_OPCODE(ip) @ extract opcode from rINST 24 GOTO_OPCODE(ip) @ jump to next instruction 25 #endif 26