blob: f4497726e8cdfb6494ab745d6c223eefca7847e9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
;;; Test 68HC11 linker relaxation from extended addressing to direct
;;; addressing modes
;;;
.sect .text
.globl _start
_start:
start:
lds stack
ldd _bar
beq F1
beq F2
std _bar
jsr _bar
F1:
addd _toto
bne start
;; All the following instructions will be relaxed and win 1 byte
;; for each.
addd _toto+200
addd stack+256-20
adca _table+2
adcb _table+3
adda _table+4
addb _table+5
addd _table+6
anda _table+7
andb _table+8
cmpa _table+9
cmpb _table+10
cpd _table+11
cpx _table+12
cpy _table+13
eora _table+14
eorb _table+15
jsr _table+16
ldaa _table+17
ldab _table+18
ldd _table+19
lds _table+20
ldx _table+21
ldy _table+22
oraa _table+23
orab _table+24
sbcb _table+25
sbca _table+26
staa _table+27
stab _table+28
std _table+29
sts _table+30
stx _table+31
sty _table+32
suba _table+33
subb _table+34
subd _table+35
;; 'bne' is assembled as far branch and must relax to
;; a relative 8-bit branch.
bne _start
;; Likewise for next branch
bra F1
rts
;;; The following instructions will not be relaxed
no_relax:
addd _stack_top+60
std _stack_top+40
;; 'tst' does not support direct addressing mode.
tst _toto+1
bne no_relax
.skip 200
F2:
bra _start
.sect .page0
_bar:
.long 0
_toto:
.long 0
.skip 32
stack:
.skip 10
_table:
.skip 200
_stack_top:
|