52 lines
969 B
ArmAsm
52 lines
969 B
ArmAsm
;;; Test 68HC11 linker relaxation and fixup of brclr/brset branches
|
|
;;;
|
|
.sect .text
|
|
.globl _start
|
|
_start:
|
|
start:
|
|
brclr 140,x#200,L8 ; Branch adjustment covers the whole test
|
|
;;; The 'addd' is relaxed and we win 1 byte. The next brclr/brset
|
|
;;; branch must be fixed and reduced by 1. We check for different
|
|
;;; addressing modes because the instruction has different opcode and
|
|
;;; different lengths.
|
|
L1:
|
|
addd _toto
|
|
brclr 20,x,#3,L1
|
|
brclr 90,x,#99,L3 ; Likewise with forward branch
|
|
L2:
|
|
addd _toto
|
|
brclr 19,y,#4,L2
|
|
brclr 91,y,#98,L4
|
|
L3:
|
|
addd _toto
|
|
brset 18,x,#5,L3
|
|
brset 92,x,#97,L5
|
|
L4:
|
|
addd _toto
|
|
brset 17,y,#6,L4
|
|
brset 93,y,#96,L5
|
|
L5:
|
|
addd _toto
|
|
brset *_table,#7,L5
|
|
brset *_table+10,#95,L7
|
|
L6:
|
|
addd _toto
|
|
brclr *_table+1,#8,L6
|
|
brset *_table+11,#94,L8
|
|
L7:
|
|
addd _toto
|
|
brclr *_table+1,#8,L6
|
|
L8:
|
|
brclr 140,x#200,_start ; Branch adjustment covers the whole test
|
|
rts
|
|
|
|
.sect .page0
|
|
_bar:
|
|
.long 0
|
|
_toto:
|
|
.long 0
|
|
.skip 32
|
|
stack:
|
|
.skip 10
|
|
_table:
|