.EXTERN MY_LABEL2; .section .text; // //2 Program Flow Control // //JUMP ( Preg ) ; /* indirect to an absolute (not PC-relative)address (a) */ //Preg: P5-0, SP, FP JUMP (P0); JUMP (P1); JUMP (P2); JUMP (P3); JUMP (P4); JUMP (P5); JUMP (SP); JUMP (FP); //JUMP ( PC + Preg ) ; /* PC-relative, indexed (a) */ JUMP (PC+P0); JUMP (PC+P1); JUMP (PC+P2); JUMP (PC+P3); JUMP (PC+P4); JUMP (PC+P5); JUMP (PC+SP); JUMP (PC+FP); //JUMP pcrelm2 ; /* PC-relative, immediate (a) or (b) */ JUMP 0X0; JUMP 1234; JUMP -1234; JUMP 2; JUMP -2; MY_LABEL1: //JUMP.S pcrel13m2 ; /* PC-relative, immediate, short (a) */ JUMP.S 0X0; JUMP.S 1234; JUMP.S -1234; JUMP.S 2; JUMP.S -2; //JUMP.L pcrel25m2 ; /* PC-relative, immediate, long (b) */ JUMP.L 0XFF800000; JUMP.L 0X007FFFFE; JUMP.L 0X0; JUMP.L 1234; JUMP.L -1234; JUMP.L 2; JUMP.L -2; //JUMP user_label ; /* user-defined absolute address label, */ JUMP MY_LABEL1; JUMP MY_LABEL2; JUMP MY_LABEL1-2; JUMP MY_LABEL2-2; //IF CC JUMP pcrel11m2 ; /* branch if CC=1, branch predicted as not taken (a) */ IF CC JUMP 0xFFFFFE08; IF CC JUMP 0x0B4; IF CC JUMP 0; //IF CC JUMP pcrel11m2 (bp) ; /* branch if CC=1, branch predicted as taken (a) */ IF CC JUMP 0xFFFFFE08(bp); IF CC JUMP 0x0B4(bp); //IF !CC JUMP pcrel11m2 ; /* branch if CC=0, branch predicted as not taken (a) */ IF !CC JUMP 0xFFFFFF22; IF !CC JUMP 0X120; //IF !CC JUMP pcrel11m2 (bp) ; /* branch if CC=0, branch predicted as taken (a) */ IF !CC JUMP 0xFFFFFF22(bp); IF !CC JUMP 0X120(bp); //IF CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ IF CC JUMP MY_LABEL1; IF CC JUMP MY_LABEL2; //IF CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ IF CC JUMP MY_LABEL1(bp); IF CC JUMP MY_LABEL2(bp); //IF !CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ IF !CC JUMP MY_LABEL1; IF !CC JUMP MY_LABEL2; //IF !CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ IF !CC JUMP MY_LABEL1(bp); IF !CC JUMP MY_LABEL2(bp); //CALL ( Preg ) ; /* indirect to an absolute (not PC-relative) address (a) */ CALL(P0); CALL(P1); CALL(P2); CALL(P3); CALL(P4); CALL(P5); //CALL ( PC + Preg ) ; /* PC-relative, indexed (a) */ CALL(PC+P0); CALL(PC+P1); CALL(PC+P2); CALL(PC+P3); CALL(PC+P4); CALL(PC+P5); //CALL pcrel25m2 ; /* PC-relative, immediate (b) */ CALL 0x123456 ; CALL -1234; //CALL user_label ; /* user-defined absolute address label,resolved by the assembler/linker to the appropriate PC-relative instruction (a) or (b) */ CALL MY_LABEL1; CALL MY_LABEL2; RTS ; // Return from Subroutine (a) RTI ; // Return from Interrupt (a) RTX ; // Return from Exception (a) RTN ; // Return from NMI (a) RTE ; // Return from Emulation (a) lsetup ( 4, 4 ) lc0 ; lsetup ( beg_poll_bit, end_poll_bit ) lc0 ; NOP;NOP; beg_poll_bit: R0=1(Z); end_poll_bit: R1=2(Z); lsetup ( 4, 6 ) lc1 ; lsetup ( FIR_filter, bottom_of_FIR_filter ) lc1 ; NOP; FIR_filter: R0=1(Z); bottom_of_FIR_filter: R1=2(Z); lsetup ( 4, 8 ) lc0 = p1 ; lsetup ( 4, 8 ) lc0 = p1>>1 ; loop DoItSome LC0 ; /* define loop DoItSome with Loop Counter 0 */ loop_begin DoItSome ; /* place before the first instruction in the loop */ R0=1; R1=2; loop_end DoItSome ; /* place after the last instruction in the loop */ loop DoItSomeMore LC1 ; /* define loop MyLoop with Loop Counter 1*/