ld: M68HC11/68HC12
1
1 4.3 'ld' and the Motorola 68HC11 and 68HC12 families
1 ====================================================
1
1 4.3.1 Linker Relaxation
1 -----------------------
1
1 For the Motorola 68HC11, 'ld' can perform these global optimizations
1 when you specify the '--relax' command-line option.
1
1 _relaxing address modes_
1 'ld' finds all 'jsr' and 'jmp' instructions whose targets are
1 within eight bits, and turns them into eight-bit program-counter
1 relative 'bsr' and 'bra' instructions, respectively.
1
1 'ld' also looks at all 16-bit extended addressing modes and
1 transforms them in a direct addressing mode when the address is in
1 page 0 (between 0 and 0x0ff).
1
1 _relaxing gcc instruction group_
1 When 'gcc' is called with '-mrelax', it can emit group of
1 instructions that the linker can optimize to use a 68HC11 direct
1 addressing mode. These instructions consists of 'bclr' or 'bset'
1 instructions.
1
1 4.3.2 Trampoline Generation
1 ---------------------------
1
1 For 68HC11 and 68HC12, 'ld' can generate trampoline code to call a far
1 function using a normal 'jsr' instruction. The linker will also change
1 the relocation to some far function to use the trampoline address
1 instead of the function address. This is typically the case when a
1 pointer to a function is taken. The pointer will in fact point to the
1 function trampoline.
1