diff options
Diffstat (limited to 'ld/testsuite/ld-m68hc11/relax-direct.s')
-rw-r--r-- | ld/testsuite/ld-m68hc11/relax-direct.s | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/ld/testsuite/ld-m68hc11/relax-direct.s b/ld/testsuite/ld-m68hc11/relax-direct.s new file mode 100644 index 0000000..f449772 --- /dev/null +++ b/ld/testsuite/ld-m68hc11/relax-direct.s @@ -0,0 +1,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: + |