Chapter 4 Optimization
58 Usage Example
Example: subroutine call converted to a relative branch
This section gives an example of a CALLS LABEL instruction with a target address within the range of
a relative jump--that is, between -32,768 and +32,767 from the current program counter.
The source list is as follows.
The final list file after assembly is shown next. Since the CALLS LABEL instruction in line four con-
tains a target address that may be expressed with a 2-byte relative branch, the assembler replaces it with
the CALLS LABEL variant with a 2-byte address field. Note that the mnemonics and object code are
different.
opt on
_TEXT section CODE, PUBLIC,1
sub_func
addr_set calls func_end
org addr_set+128
func_end rts
end
opt4.lst Page 1
*** PanaX series Series MN1030 Cross Assembler ***
Loc Object Line Source
1 opt on
2 _TEXT section CODE, PUBLIC, 1
40000000 3 sub_func
40000000 FAFF8000 @4 addr_set Calls func_end
5
6 org addr_set+128
40000080 7 func_end
40000080 F0FC 8 rts
9end
opt4.lst Page 2
*** Symbol Table ***
40000000 T sub_func
40000000 T addr_set
40000080 T func_end