Example 5. The Function From Example 3 Compiled with the --opt_level=2, --optimizer_interlist, and --c_src_interlist Options
;----------------------------------------------------------------------
; 2 | int copy (char *str, const char *s, int n)
;----------------------------------------------------------------------
;***************************************************************
;* FNAME: _copy FR SIZE: 0 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* FUNCTION PROPERTIES *
;* 0 Parameter, 0 Auto, 0 SOE *
;***************************************************************
_copy
;* AR4 assigned to _str
;* AR5 assigned to _s
;* AL assigned to _n
;* AL assigned to _n
;* AR5 assigned to _s
;* AR4 assigned to _str
;* AR6 assigned to L$1
;*** 6 ----------------------- if ( n <= 0 ) goto g4;
;----------------------------------------------------------------------
; 4 | int i;
;----------------------------------------------------------------------
;----------------------------------------------------------------------
; 6 | for (i = 0; i < n; i++)
;----------------------------------------------------------------------
CMPB AL,#0 ; |6|
B L2,LEQ ; |6|
; branch occurs ; |6|
;*** ----------------------- #pragma MUST_ITERATE(1, 4294967295, 1)
:*** ----------------------- L$1 = n-1;
ADDB AL,#-1
MOVZ AR6,AL
NOP
L1:
;*** 7 ----------------------- *str++ = *s++;
;*** 7 ----------------------- if ( (--L$1) != (-1) ) goto g3;
;----------------------------------------------------------------------
; 7 | *str++ = *s++;
;----------------------------------------------------------------------
MOV AL,*XAR5++ ; |7|
MOV *XAR4++,AL ; |7|
BANZ L1,AR6--
; branch occurs ; |7|
;*** -----------------------g4:
;*** ----------------------- return;
L2:
LRETR
; return occurs