packages feed

gf-3.4: src/runtime/c/teyjus/tables_gen/instrformats/instrformats_32.in

{
type intref    = int ref
type aconstant = Absyn.aconstant
type akind     = Absyn.akind	

}

OPERAND TYPES

  P                                                  /* (1 byte) padding */
  WP                                                 /* (1 word) padding */
  R      RegInd         Byte           1   int       /* argument register number */ 
  E      EnvInd         Byte           1   int       /* environment variable number */
  N      NextClauseInd  Byte           1   int       /* next clause number in impt or impl pt */
  I1     OneByteInt     Byte           1   int       /* 1 byte natural number */
  CE     ClEnvInd       Byte           1   int       /* closure environment variable number */
  SEG    ImpSegInd      Byte           1   int       /* import segment index  */ 
  C      CstIndex       TwoBytes       2   aconstant /* constant symbol table index */
  K      KstIndex       TwoBytes       2   akind     /* kind symbol table index  */
  L      CodeLabel      CSpacePtr      4   intref    /* code location  */
  I      Int            int            4   int       /* integer immediate value */
  F      Float          float          4   float     /* floating point immediate value */
  S      Str            DF_StrDataPtr  2   int       /* string pointer */
  MT     ModTab         MemPtr         2   int       /* module table address */
  IT     ImplTab        MemPtr         2   int       /* impl table address */
  HT     HashTab        MemPtr         2   int       /* hash table address */
  BVT    BranchTab      MemPtr         2   int       /* branch table for bound var indexing */
  X                                                  /* operand list terminator */
  OPCODE Byte 1


INSTR CATEGORY

  MAX OPERAND 8 

  X      [P P P X X X X X]
         X_LEN    4

  RX     [R P P X X X X X]
         RX_LEN   4; RX_R    1
 
  EX     [E P P X X X X X]
         EX_LEN   4; EX_E    1

  I1X    [I1 P P X X X X X]
         I1X_LEN  4; I1X_I1  1

  CX     [P C X X X X X X]
         CX_LEN   4; CX_C    2

  KX     [P K X X X X X X]
         KX_LEN   4; KX_K    2

  IX     [P P P I X X X X]
         IX_LEN   8; IX_I    4

  FX     [P P P F X X X X]
         FX_LEN   8; FX_F    4

  SX     [P P P S X X X X]
         SX_LEN   8; SX_S    4

  MTX    [P P P MT X X X X]
         MTX_LEN  8; MTX_MT  4
 
  LX     [P P P L X X X X]
         LX_LEN   8; LX_L    4

  RRX    [R R P X X X X X]
         RRX_LEN  4; RRX_R1  1;   RRX_R2  2
 
  ERX    [E R P X X X X X]
         ERX_LEN  4; ERX_E   1;   ERX_R   2

  RCX    [R C X X X X X X]
         RCX_LEN  4; RCX_R   1;   RCX_C   2  
  
  RIX    [R P P I X X X X]
         RIX_LEN  8; RIX_R   1;   RIX_I   4

  RFX    [R P P F X X X X]
         RFX_LEN  8; RFX_R   1;   RFX_F   4

  RSX    [R P P S X X X X]
         RSX_LEN  8; RSX_R   1;   RSX_S   4

  RI1X   [R I1 P X X X X X]
         RI1X_LEN 4; RI1X_R  1;   RI1X_I1 2

  RCEX   [R CE P X X X X X]
         RCEX_LEN 4; RCEX_R  1;   RCEX_CE 2

  ECEX   [E CE P X X X X X]
         ECEX_LEN 4; ECEX_E  1;   ECEX_CE 2
  
  CLX    [P C L X X X X X]
         CLX_LEN  8; CLX_C   2;   CLX_L   4

  RKX    [R K X X X X X X]
         RKX_LEN  4; RKX_R   1;   RKX_K   2

  ECX    [E C X X X X X X]
         ECX_LEN  4; ECX_E   1;   ECX_C   2  
    
  I1ITX  [I1 P P IT X X X X]
         I1ITX_LEN 8; I1ITX_I1 1; I1ITX_IT 4

  I1LX   [I1 P P L X X X X]
         I1LX_LEN  8; I1LX_I1 1; I1LX_L 4 

  SEGLX  [SEG P P L X X X X]
         SEGLX_LEN 8; SEGLX_SEG 1; SEGLX_L 4 

  I1LWPX [I1 P P L WP X X X]
         I1LWPX_LEN 12; I1LWPX_I1 1; I1LWPX_L 4 

  I1NX   [I1 N P X X X X X]
         I1NX_LEN 4;  I1NX_I1 1; I1NX_N 2 

  I1HTX  [I1 P P HT X X X X]
         I1HTX_LEN 8; I1HTX_I1 1; I1HTX_HT 4

  I1BVTX [I1 P P BVT X X X X]
         I1BVTX_LEN 8; I1BVTX_I1 1; I1BVTX_BVT 4

  CWPX   [P C WP X X X X X] 
         CWPX_LEN  8;  CWPX_C 2

  I1WPX  [I1 P P WP X X X X] 
         I1WPX_LEN 8;  I1WPX_I1 1

  RRI1X  [R R I1 X X X X X] 
         RRI1X_LEN 4; RRI1X_R1 1; RRI1X_R2 2; RRI1X_I1 3

  RCLX   [R C L X X X X X]
         RCLX_LEN 8; RCLX_R   1; RCLX_C   2; RCLX_L   4 

  RCI1X  [R C I1 P P P X X]
         RCI1X_LEN 8; RCI1X_R  1; RCI1X_C  2; RCI1X_I1 4

  SEGI1LX [SEG I1 P L X X X X]
          SEGI1LX_LEN 8; SEGI1LX_SEG 1; SEGI1LX_I1 2; SEGI1LX_L 4 

  I1LLX  [I1 P P L L X X X]
         I1LLX_LEN  12; I1LLX_I1   1; I1LLX_L1   4; I1LLX_L2 8

  NLLX   [N P P L L X X X]
         NLLX_LEN  12;  NLLX_N     1; NLLX_L1    4; NLLX_L2  8

  LLLLX  [P P P L L L L X]
         LLLLX_LEN 20;  LLLLX_L1   4; LLLLX_L2   8; LLLLX_L3 12; LLLLX_L4 16

  I1CWPX [I1 C WP X X X X X]
         I1CWPX_LEN 8; I1CWPX_I1  1; I1CWPX_C   2 

  I1I1WPX [I1 I1 P WP X X X X]
          I1I1WPX_LEN 8; I1I1WPX_I11 1; I1I1WPX_I12 2

  CALL_I1_LEN 7


INSTRUCTIONS 145

   /*  Instructions for term unification and creation  */

   0         put_variable_t             RRX          RRX_LEN;
   1         put_variable_p             ERX          ERX_LEN;
   2         put_value_t                RRX          RRX_LEN;
   3         put_value_p                ERX          ERX_LEN;
   4         put_unsafe_value           ERX          ERX_LEN;
   5         copy_value                 ERX          ERX_LEN;
   6         put_m_const                RCX          RCX_LEN;
   7         put_p_const                RCX          RCX_LEN;
   8         put_nil                    RX           RX_LEN;
   9         put_integer                RIX          RIX_LEN;
   10        put_float                  RFX          RFX_LEN;
   11        put_string                 RSX          RSX_LEN;
   12        put_index                  RI1X         RI1X_LEN;
   13        put_app                    RRI1X        RRI1X_LEN;
   14        put_list                   RX           RX_LEN;
   15        put_lambda                 RRI1X        RRI1X_LEN;

   16        set_variable_t             RX           RX_LEN;
   17        set_variable_te            RX           RX_LEN;
   18        set_variable_p             EX           EX_LEN;
   19        set_value_t                RX           RX_LEN;
   20        set_value_p                EX           EX_LEN;
   21        globalize_pt               ERX          ERX_LEN;
   22        globalize_t                RX           RX_LEN;
   23        set_m_const                CX           CX_LEN;
   24        set_p_const                CX           CX_LEN;
   25        set_nil                    X            X_LEN;
   26        set_integer                IX           IX_LEN;
   27        set_float                  FX           FX_LEN;
   28        set_string                 SX           SX_LEN;
   29        set_index                  I1X          I1X_LEN;
   30        set_void                   I1X          I1X_LEN;
   31        deref                      RX           RX_LEN;
   32        set_lambda                 RI1X         RI1X_LEN;


   33        get_variable_t             RRX          RRX_LEN;
   34        get_variable_p             ERX          ERX_LEN;
   35        init_variable_t            RCEX         RCEX_LEN;
   36        init_variable_p            ECEX         ECEX_LEN;
   37        get_m_constant             RCX          RCX_LEN;
   38        get_p_constant             RCLX         RCLX_LEN;
   39        get_integer                RIX          RIX_LEN;
   40        get_float                  RFX          RFX_LEN;
   41        get_string                 RSX          RSX_LEN;
   42        get_nil                    RX           RX_LEN;
   43        get_m_structure            RCI1X        RCI1X_LEN;
   44        get_p_structure            RCI1X        RCI1X_LEN;
   45        get_list                   RX           RX_LEN;

   46        unify_variable_t           RX           RX_LEN;
   47        unify_variable_p           EX           EX_LEN;
   48        unify_value_t              RX           RX_LEN;
   49        unify_value_p              EX           EX_LEN;
   50        unify_local_value_t        RX           RX_LEN;
   51        unify_local_value_p        EX           EX_LEN;
   52        unify_m_constant           CX           CX_LEN;
   53        unify_p_constant           CLX          CLX_LEN;
   54        unify_integer              IX           IX_LEN;
   55        unify_float                FX           FX_LEN;
   56        unify_string               SX           SX_LEN;
   57        unify_nil                  X            X_LEN;
   58        unify_void                 I1X          I1X_LEN;

   /* Instructions for type unification and creation */ 
   59        put_type_variable_t        RRX          RRX_LEN;
   60        put_type_variable_p        ERX          ERX_LEN;
   61        put_type_value_t           RRX          RRX_LEN;
   62        put_type_value_p           ERX          ERX_LEN;
   63        put_type_unsafe_value      ERX          ERX_LEN;
   64        put_type_const             RKX          RKX_LEN;
   65        put_type_structure         RKX          RKX_LEN;
   66        put_type_arrow             RX           RX_LEN;

   67        set_type_variable_t        RX           RX_LEN;
   68        set_type_variable_p        EX           EX_LEN;
   69        set_type_value_t           RX           RX_LEN;
   70        set_type_value_p           EX           EX_LEN;
   71        set_type_local_value_t     RX           RX_LEN;
   72        set_type_local_value_p     EX           EX_LEN;
   73        set_type_constant          KX           KX_LEN;

   74        get_type_variable_t        RRX          RRX_LEN;
   75        get_type_variable_p        ERX          ERX_LEN;
   76        init_type_variable_t       RCEX         RCEX_LEN;
   77        init_type_variable_p       ECEX         ECEX_LEN;
   78        get_type_value_t           RRX          RRX_LEN;
   79        get_type_value_p           ERX          ERX_LEN;
   80        get_type_constant          RKX          RKX_LEN;
   81        get_type_structure         RKX          RKX_LEN;
   82        get_type_arrow             RX           RX_LEN;

   83        unify_type_variable_t      RX           RX_LEN;
   84        unify_type_variable_p      EX           EX_LEN;
   85        unify_type_value_t         RX           RX_LEN;
   86        unify_type_value_p         EX           EX_LEN;
   87        unify_envty_value_t        RX           RX_LEN;
   88        unify_envty_value_p        EX           EX_LEN;
   89        unify_type_local_value_t   RX           RX_LEN;
   90        unify_type_local_value_p   EX           EX_LEN;
   91        unify_envty_local_value_t  RX           RX_LEN;
   92        unify_envty_local_value_p  EX           EX_LEN;
   93        unify_type_constant        KX           KX_LEN;

   /* Instructions for handling higher-order aspects  */

   94        pattern_unify_t            RRX          RRX_LEN;
   95        pattern_unify_p            ERX          ERX_LEN;
   96        finish_unify               X            X_LEN;
   97        head_normalize_t           RX           RX_LEN;
   98        head_normalize_p           EX           EX_LEN;

   /* Instructions for handling logical aspects   */

   99        incr_universe              X            X_LEN;
   100       decr_universe              X            X_LEN;
   101       set_univ_tag               ECX          ECX_LEN;
   102       tag_exists_t               RX           RX_LEN;
   103       tag_exists_p               EX           EX_LEN;
   104       tag_variable               EX           EX_LEN;

   105       push_impl_point            I1ITX        I1ITX_LEN;
   106       pop_impl_point             X            X_LEN;
   107       add_imports                SEGI1LX      SEGI1LX_LEN;
   108       remove_imports             SEGLX        SEGLX_LEN;
   109       push_import                MTX          MTX_LEN;
   110       pop_imports                I1X          I1X_LEN;

   /* Control Instructions  */

   111       allocate                   I1X          I1X_LEN;
   112       deallocate                 X            X_LEN;
   113       call                       I1LX         I1LX_LEN;
   114       call_name                  I1CWPX       I1CWPX_LEN;
   115       execute                    LX           LX_LEN;
   116       execute_name               CWPX         CWPX_LEN;        
   117       proceed                    X            X_LEN;

   /* Choice Instructions  */
   
   118       try_me_else                I1LX         I1LX_LEN;
   119       retry_me_else              I1LX         I1LX_LEN;
   120       trust_me                   I1WPX        I1WPX_LEN;
   121       try                        I1LX         I1LX_LEN;
   122       retry                      I1LX         I1LX_LEN;
   123       trust                      I1LWPX       I1LWPX_LEN;
   124       trust_ext                  I1NX         I1NX_LEN;
   125       try_else                   I1LLX        I1LLX_LEN;
   126       retry_else                 I1LLX        I1LLX_LEN;
   127       branch                     LX           LX_LEN;

   /* Indexing Instructions */

   128       switch_on_term             LLLLX        LLLLX_LEN;
   129       switch_on_constant         I1HTX        I1HTX_LEN;
   130       switch_on_bvar             I1BVTX       I1BVTX_LEN;
   131       switch_on_reg              NLLX         NLLX_LEN;

   /* Cut Instructions  */

   132       neck_cut                   X            X_LEN;
   133       get_level                  EX           EX_LEN;
   134       put_level                  EX           EX_LEN;
   135       cut                        EX           EX_LEN;

   /* Miscellaneous Instructions */
   
   136       call_builtin               I1I1WPX      I1I1WPX_LEN;
   137       builtin                    I1X          I1X_LEN;
   138       stop                       X            X_LEN;
   139       halt                       X            X_LEN;
   140       fail                       X            X_LEN;

   /* new added */
   141       create_type_variable       EX           EX_LEN;

   /* resolved by the linker */
   142       execute_link_only          CWPX         CWPX_LEN;     
   143       call_link_only             I1CWPX       I1CWPX_LEN;

   144       put_variable_te            RRX          RRX_LEN