Commit | Line | Data |
---|---|---|
8df55cb8 CM |
1 | |
2 | .EXTERN MY_LABEL2; | |
3 | .section .text; | |
4 | ||
5 | // | |
6 | //2 Program Flow Control | |
7 | // | |
8 | ||
9 | ||
10 | //JUMP ( Preg ) ; /* indirect to an absolute (not PC-relative)address (a) */ | |
11 | //Preg: P5-0, SP, FP | |
12 | ||
13 | JUMP (P0); | |
14 | JUMP (P1); | |
15 | JUMP (P2); | |
16 | JUMP (P3); | |
17 | JUMP (P4); | |
18 | JUMP (P5); | |
19 | JUMP (SP); | |
20 | JUMP (FP); | |
21 | ||
22 | //JUMP ( PC + Preg ) ; /* PC-relative, indexed (a) */ | |
23 | JUMP (PC+P0); | |
24 | JUMP (PC+P1); | |
25 | JUMP (PC+P2); | |
26 | JUMP (PC+P3); | |
27 | JUMP (PC+P4); | |
28 | JUMP (PC+P5); | |
29 | JUMP (PC+SP); | |
30 | JUMP (PC+FP); | |
31 | ||
32 | ||
33 | //JUMP pcrelm2 ; /* PC-relative, immediate (a) or (b) */ | |
34 | ||
35 | JUMP 0X0; | |
36 | JUMP 1234; | |
37 | JUMP -1234; | |
38 | JUMP 2; | |
39 | JUMP -2; | |
40 | ||
41 | MY_LABEL1: | |
42 | //JUMP.S pcrel13m2 ; /* PC-relative, immediate, short (a) */ | |
43 | JUMP.S 0X0; | |
44 | JUMP.S 1234; | |
45 | JUMP.S -1234; | |
46 | JUMP.S 2; | |
47 | JUMP.S -2; | |
48 | ||
49 | //JUMP.L pcrel25m2 ; /* PC-relative, immediate, long (b) */ | |
50 | JUMP.L 0XFF800000; | |
51 | JUMP.L 0X007FFFFE; | |
52 | JUMP.L 0X0; | |
53 | JUMP.L 1234; | |
54 | JUMP.L -1234; | |
55 | JUMP.L 2; | |
56 | JUMP.L -2; | |
57 | ||
58 | //JUMP user_label ; /* user-defined absolute address label, */ | |
59 | JUMP MY_LABEL1; | |
60 | JUMP MY_LABEL2; | |
61 | ||
62 | JUMP MY_LABEL1-2; | |
63 | JUMP MY_LABEL2-2; | |
64 | ||
65 | //IF CC JUMP pcrel11m2 ; /* branch if CC=1, branch predicted as not taken (a) */ | |
66 | IF CC JUMP 0xFFFFFE08; | |
67 | IF CC JUMP 0x0B4; | |
68 | IF CC JUMP 0; | |
69 | ||
70 | //IF CC JUMP pcrel11m2 (bp) ; /* branch if CC=1, branch predicted as taken (a) */ | |
71 | IF CC JUMP 0xFFFFFE08(bp); | |
72 | IF CC JUMP 0x0B4(bp); | |
73 | ||
74 | //IF !CC JUMP pcrel11m2 ; /* branch if CC=0, branch predicted as not taken (a) */ | |
75 | IF !CC JUMP 0xFFFFFF22; | |
76 | IF !CC JUMP 0X120; | |
77 | ||
78 | //IF !CC JUMP pcrel11m2 (bp) ; /* branch if CC=0, branch predicted as taken (a) */ | |
79 | IF !CC JUMP 0xFFFFFF22(bp); | |
80 | IF !CC JUMP 0X120(bp); | |
81 | ||
82 | //IF CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ | |
83 | IF CC JUMP MY_LABEL1; | |
84 | IF CC JUMP MY_LABEL2; | |
85 | ||
86 | //IF CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ | |
87 | IF CC JUMP MY_LABEL1(bp); | |
88 | IF CC JUMP MY_LABEL2(bp); | |
89 | ||
90 | //IF !CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ | |
91 | IF !CC JUMP MY_LABEL1; | |
92 | IF !CC JUMP MY_LABEL2; | |
93 | ||
94 | //IF !CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */ | |
95 | IF !CC JUMP MY_LABEL1(bp); | |
96 | IF !CC JUMP MY_LABEL2(bp); | |
97 | ||
98 | //CALL ( Preg ) ; /* indirect to an absolute (not PC-relative) address (a) */ | |
99 | CALL(P0); | |
100 | CALL(P1); | |
101 | CALL(P2); | |
102 | CALL(P3); | |
103 | CALL(P4); | |
104 | CALL(P5); | |
105 | ||
106 | ||
107 | //CALL ( PC + Preg ) ; /* PC-relative, indexed (a) */ | |
108 | CALL(PC+P0); | |
109 | CALL(PC+P1); | |
110 | CALL(PC+P2); | |
111 | CALL(PC+P3); | |
112 | CALL(PC+P4); | |
113 | CALL(PC+P5); | |
114 | ||
115 | //CALL pcrel25m2 ; /* PC-relative, immediate (b) */ | |
116 | CALL 0x123456 ; | |
117 | CALL -1234; | |
118 | ||
119 | //CALL user_label ; /* user-defined absolute address label,resolved by the assembler/linker to the appropriate PC-relative instruction (a) or (b) */ | |
120 | CALL MY_LABEL1; | |
121 | CALL MY_LABEL2; | |
122 | ||
123 | RTS ; // Return from Subroutine (a) | |
124 | RTI ; // Return from Interrupt (a) | |
125 | RTX ; // Return from Exception (a) | |
126 | RTN ; // Return from NMI (a) | |
127 | RTE ; // Return from Emulation (a) | |
128 | ||
129 | lsetup ( 4, 4 ) lc0 ; | |
130 | ||
131 | lsetup ( beg_poll_bit, end_poll_bit ) lc0 ; | |
132 | NOP;NOP; | |
133 | beg_poll_bit: R0=1(Z); | |
134 | end_poll_bit: R1=2(Z); | |
135 | ||
136 | lsetup ( 4, 6 ) lc1 ; | |
137 | ||
138 | lsetup ( FIR_filter, bottom_of_FIR_filter ) lc1 ; | |
139 | NOP; | |
140 | FIR_filter: R0=1(Z); | |
141 | bottom_of_FIR_filter: R1=2(Z); | |
142 | ||
143 | lsetup ( 4, 8 ) lc0 = p1 ; | |
144 | ||
145 | lsetup ( 4, 8 ) lc0 = p1>>1 ; | |
146 | ||
147 | loop DoItSome LC0 ; /* define loop DoItSome with Loop Counter 0 */ | |
148 | loop_begin DoItSome ; /* place before the first instruction in the loop */ | |
149 | R0=1; | |
150 | R1=2; | |
151 | loop_end DoItSome ; /* place after the last instruction in the loop */ | |
152 | ||
153 | loop DoItSomeMore LC1 ; /* define loop MyLoop with Loop Counter 1*/ | |
154 | ||
155 |