ENTRY,  ( as n -- )

publication: 9 novembre 2022 / mis à jour 6 janvier 2023

Read this page in english

 

vocabulaire: xtensa

Entrée de sous-programme.

Mot d'instruction. (BRI12).

ENTRY, est destiné à être la première instruction de tous les sous-programmes appelés avec CALL4, CALL8,

CALL12, CALLX4, CALLX8, ou CALLX12,. Cette instruction n'est pas destinée à être utilisée par une routine appelée par CALL0 ou CALLX0,.

ENTRY, a deux objectifs :

  1. Tout d'abord, il incrémente le pointeur de la fenêtre de registre (WindowBase) du montant demandé par l'appelant (tel qu'enregistré dans le champ PS.CALLINC).
  2. Deuxièmement, il copie le pointeur de pile de l'appelant à l'appelé et alloue le cadre de pile de l'appelé. L'opérande as spécifie le registre du pointeur de pile; il doit spécifier l'un des registres a0..a3 ou l'opération de ENTRY, n'est pas définie. Il est lu avant que la fenêtre ne soit déplacée, la taille du cadre de pile est soustraite, puis le registre as dans la fenêtre déplacée est écrit.

La taille du cadre de pile est spécifiée sous la forme du champ imm12 non signé de 12 bits en unités de huit octets. La taille est étendue à zéro, décalée vers la gauche de 3 et soustraite du pointeur de pile de l'appelant pour obtenir le pointeur de pile de l'appelé. Par conséquent, des trames de pile jusqu'à 32760 octets peuvent être spécifiées. La taille initiale du cadre de pile doit être une constante, mais par la suite, l'instruction MOVSP peut être utilisée pour allouer des objets de taille dynamique sur la pile ou pour étendre davantage un cadre de pile constant supérieur à 32760 octets.

Exemple:

code my2*  
  a1 32 ENTRY,  
  a8 a2 0 L32I.N,  
  a8 a8 1 SLLI,  
  a8 a2 0 S32I.N,  
  RETW.N,  
end-code 

Legal: site web personnel sans commerce / personal site without seling