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