Home » Compiling Programs » Directives » Reference » RET_XSTK
Abbreviation
RX
Arguments
None.
Default
None.
µVision
Options — C51 — Misc controls.
Description
The RET_XSTK directive instructs the compiler to use the xdata (Large Model) reentrant stack for return addresses. Normally, return addresses are stored on the 8051's hardware stack. When this directive is specified, the compiler generates code that pops the return address from the hardware stack and stores it on the reentrant stack. For example:
1 #pragma RET_XSTK
2 extern void func2 (void);
3
4 void func (void) {
5 1 func2 ();
6 1 }
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION func (BEGIN)
0000 120000 E LCALL ?C?CALL_XBP
; SOURCE LINE # 5
0003 120000 E LCALL func2
; SOURCE LINE # 6
0006 020000 E LJMP ?C?RET_XBP
; FUNCTION func (END)
Note
You may use this directive to unload return addresses from the on-chip or hardware stack. It may be selectively used on modules that contain the deepest stack nesting.
If you use this directive you must initialize the reentrant stack pointer defined in the startup code. Refer to STARTUP.A51 for more information on how to initialize the reentrant stacks.
See Also
RET_PSTK
Example
C51 SAMPLE.C RET_XSTK
RET_XSTK 編譯器僞指令
Home » Compiling Programs » Directives » Reference » RET_XSTK