blob: 7ae355100a004a3b590e4d51e85cf6f96a9bdefd [file] [log] [blame]
.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*/