4.1 ld and the H8/300
For the H8/300, ld can perform these global optimizations when you specify the --relax command-line option.
- relaxing address modes
-
ld finds all
jsr
andjmp
instructions whose targets are within eight bits, and turns them into eight-bit program-counter relativebsr
andbra
instructions, respectively. - synthesizing instructions
-
ld finds all
mov.b
instructions which use the sixteen-bit absolute address form, but refer to the top page of memory, and changes them to use the eight-bit address form. (That is: the linker turns mov.b@
aa :16 into mov.b@
aa :8 whenever the address aa is in the top page of memory).
- bit manipulation instructions
-
ld finds all bit manipulation instructions like
band, bclr, biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, bxor
which use 32 bit and 16 bit absolute address form, but refer to the top page of memory, and changes them to use the 8 bit address form. (That is: the linker turns bset #xx:3,@
aa :32 into bset #xx:3,@
aa :8 whenever the address aa is in the top page of memory).
- system control instructions
-
ld finds all
ldc.w, stc.w
instrcutions which use the 32 bit absolute address form, but refer to the top page of memory, and changes them to use 16 bit address form. (That is: the linker turns ldc.w@
aa :32,ccr into ldc.w@
aa :16,ccr whenever the address aa is in the top page of memory).