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