天天看點

CX51 使用者手冊----RET_XSTK僞指令 RET_XSTK Compiler Directive RET_XSTK 編譯器僞指令

聲明:

1、本翻譯僅供個人學習使用,本人沒有提供技術支援的義務,也不承擔由此引發的任何後果。

2、請勿用于商業用途。

3、英文來自:http://www.keil.com/support/man/docs/c51/。

4、歡迎大家共同與我交流探讨([email protected])。

RET_XSTK Compiler Directive

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)
      
CX51 使用者手冊----RET_XSTK僞指令 RET_XSTK Compiler Directive RET_XSTK 編譯器僞指令
 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

縮寫 RX
參數 None.
預設 None.
µVision Options — C51 — Misc controls.
描述 RET_XSTK 僞指令告訴編譯器對傳回位址使用 xdata (Large 模型) 重入棧。一般情況下,傳回位址儲存在 8051硬體棧中。當指定這個僞指令時,編譯器生成的代碼從硬體棧中彈出傳回位址,并儲存到重入棧中。例如: 
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)
      
CX51 使用者手冊----RET_XSTK僞指令 RET_XSTK Compiler Directive RET_XSTK 編譯器僞指令
 注意
  • 使用者可以使用這個僞指令從片上或硬體棧中解除安裝傳回位址。對包含深入嵌套棧的子產品可以有選擇地使用。
  • 如果使用者使用這個僞指令,必須初始化定義在啟動代碼中的重入棧指針。如何初始化重入棧的更多資訊,參考 STARTUP.A51 。
參考 RET_PSTK
示例
C51 SAMPLE.C RET_XSTK      
51