![Texas Instruments TMS320C2x User Manual Download Page 86](http://html1.mh-extra.com/html/texas-instruments/tms320c2x/tms320c2x_user-manual_1097073086.webp)
What Kind of Optimization Is Being Performed?
3-17
Optimizing Your Code
Example 3
−
2. Delayed Branch, Call, and Return Instructions
main()
{
int i0, i1;
while (input(&i0) && input(&i1))
process(i0, i1);
}
TMS320C2x/C2xx/C5x C Compiler Output:
_main:
SAR
AR0,*+
; function prolog
POPD
*+
; save AR0 and return address
SAR
AR1,*
; begin to set up local frame
BD
L2
; begin branch to loop control
LARK
AR0,3
; finish setting up local frame
LAR
AR0,*0+
***
B
L2 OCCURS
; branch to loop control
L1:
; loop body
LARK
AR2,2
; AR2 = &i1
MAR
*0+
LAC
*−,AR1
; ACC = *AR2, AR2 = &i0
SACL
*+,AR2
; stack ACC
CALLD
_process
; begin call
LAC
* ,AR1
; ACC = *AR2
SACL
*+
; stack ACC
***
CALL
_process OCCURS
; call occurs
SBRK
2
; pop stack
L2:
; loop control
MAR
* ,AR5
; AR5 = &i0
LARK
AR5,1
CALLD
_input
; begin call
MAR
*0+,AR1
SAR
AR5,*+
; stack AR5
***
CALL
_input OCCURS
; call occurs
MAR
*−
; clear stack
BZ
EPI0_1
; quit if _input returns 0
MAR
* ,AR4
; AR4 = &i1
LARK
AR4,2
CALLD
_input
; begin call
MAR
*0+,AR1
SAR
AR4,*+
; stack AR4
***
CALL
_input OCCURS
; call occurs
MAR
*−,AR2
; clear stack
BNZ
L1
; continue if _input returns !0
EPI0_1:
MAR
* ,AR1
; function epilog
SBRK
4
; clear local frame
PSHD
*−
; push return address on hardware stack
RETD
; begin return
LAR
AR0,*
; restore AR0
NOP
; necessary, no PSHD in delay slot
***
RET OCCURS
; return occurs
. . .
Summary of Contents for TMS320C2x
Page 8: ...viii...
Page 69: ...2 47 C Compiler Description...
Page 159: ...6 36...
Page 226: ...8 6...