PreviousUpNext

15.4.330  src/lib/compiler/back/low/mcg/pseudo-op-basis-type.pkg

## pseudo-ops-basis-type.pkg
#
# Representation of assembly-language pseudo-ops.

# Compiled by:
#     src/lib/compiler/back/low/lib/lowhalf.lib





stipulate
    package lbl =  codelabel;                                           # codelabel                     is from   src/lib/compiler/back/low/code/codelabel.pkg
    package qs  =  quickstring__premicrothread;                         # quickstring__premicrothread   is from   src/lib/src/quickstring--premicrothread.pkg
herein

    # We get used in:
    #
    #     src/lib/compiler/back/low/mcg/pseudo-op.api
    #     src/lib/compiler/back/low/mcg/pseudo-op-endian.api
    #
    package pseudo_op_basis_type {
        #
        Pseudo_Op (A_label_expression, A_ext)

          = ALIGN_SIZE  Int                     
          | ALIGN_ENTRY                 
          | ALIGN_LABEL
                  #     
                  # ALIGN_SIZE aligns on a 2^n boundary.
                  #
                  # ALIGN_ENTRY forces alignment on an instruction cache line 
                  # boundary, and ALIGN_LABEL is used for internal labels 
                  # (such as loops) and may only align if a small (architecture 
                  # determined) number of nops are required 



          | DATA_LABEL  lbl::Codelabel
                  #
                  # Labels for data pseudo-ops.
                  # Code labels should not be generated as pseudo-ops.

          | DATA_READ_ONLY                                              # Read-only initialized data.
          | DATA                                                        # Initialized data.
          | BSS                                                         # All-zero data.
          | TEXT                                                        # Executable code.
          | SECTION  qs::Quickstring 
                  #
                  # The usual text and data sections. 
                  # Sections are not allowed inside a text segment 


          | REORDER
          | NOREORDER
                  #
                  # May have to rethink this one!
                  # For now, all instructions following a NOREORDER pseudo-op
                  # are preserved in the order they were generated, until 
                  # a REORDER pseudo-op is seen.
                  #
                  # Perhaps what we also want a BARRIER pseudo-op that says
                  # no instructions must be moved above or below the barrier.



          | INT  { size:  Int, i: List( A_label_expression ) }          # Constant integral data.


          | ASCII   String                                              # Strings.
          | ASCIIZ  String                                              # Zero terminated strings

          | SPACE  Int                                                  # Allocate uninitialized data space with size in bytes

          | FLOAT  { size:  Int, f:  List( String ) }                   # Constant real data

          | IMPORT  List( lbl::Codelabel )                              # Import identifiers 
          | EXPORT  List( lbl::Codelabel )                              # Export identifiers 

          | COMMENT  String

          | EXT  A_ext;
               # 
               # Target-specific pseudo-ops.
               # All these pseudo-ops must be related to data
               # and not code!
    };
end;

## COPYRIGHT (c) 2001 Bell Labs, Lucent Technologies
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext