Commit | Line | Data |
---|---|---|
6e917903 TW |
1 | * local labels |
2 | * two forms, $[0-9] and label? are allowed | |
3 | * Local labels are undefined/reset in one of four ways: | |
4 | * .newblock | |
5 | * changing sections | |
6 | * entering an include file | |
7 | * leaving an include file | |
8 | .global addra, addrb, addrc | |
9 | label1: ld addra,a | |
10 | sub addrb,a | |
11 | bc $1, alt ; generates frag! | |
12 | ld addrb, a | |
13 | b $2 | |
14 | $1: ld addra,a | |
15 | $2 add addrc,a | |
16 | .newblock | |
17 | bc $1,alt | |
18 | stl a, addrc | |
19 | $1 nop | |
20 | ||
21 | * #1, First definition of local label 'lab' | |
22 | nop | |
23 | lab? add #1,a ; reports as line 17? | |
24 | b lab? | |
25 | * #2, Included file also defines local label 'lab' | |
26 | .copy labels.inc | |
27 | * #3, Next definition; exit from .copy clears all locals | |
28 | lab? add #3,a ; reports as line 22? | |
29 | b lab? | |
30 | * #4, Next definition is within macro; supersedes previous definition while | |
31 | * within the macro | |
32 | mac .macro | |
33 | lab? add #4,a ; line 31? | |
34 | b lab? | |
35 | .endm | |
36 | * Macro invocation | |
37 | mac | |
38 | * This reference should resolve to definition #3 | |
39 | after_macro: | |
40 | b lab? | |
b1ffc257 | 41 | * Section change clears all definitions; it's a CODE section if we see insns |
6e917903 TW |
42 | .sect new_section |
43 | nop | |
44 | lab? add #5,a | |
45 | nop | |
46 | nop | |
47 | b lab? | |
48 | * Newblock directive clears local labels | |
49 | .newblock | |
50 | lab? add #6,a | |
51 | nop | |
52 | nop | |
53 | b lab? | |
54 | .end | |
55 |