| ;;; 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: |
| |