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