PreviousUpNext

15.4.260  src/lib/compiler/back/low/intel32/mcg/gas-pseudo-ops-intel32-g.pkg

## gas-pseudo-ops-intel32-g.pkg
#
# Nomenclature: 'gas' == 'Gnu ASsembler'.

# Compiled by:
#     src/lib/compiler/back/low/intel32/backend-intel32.lib


# NB: Here "gas" == "gnu assembler".


stipulate
    package lem =  lowhalf_error_message;                       # lowhalf_error_message         is from   src/lib/compiler/back/low/control/lowhalf-error-message.pkg
    package pbt =  pseudo_op_basis_type;                        # pseudo_op_basis_type          is from   src/lib/compiler/back/low/mcg/pseudo-op-basis-type.pkg
herein

    # This generic is invoked from:
    #
    #     src/lib/compiler/back/low/main/intel32/backend-lowhalf-intel32-g.pkg
    #
    generic package   gas_pseudo_ops_intel32_g   (
        #             ========================
        #
        package tcf: Treecode_Form;                             # Treecode_Form                 is from   src/lib/compiler/back/low/treecode/treecode-form.api

        package tce: Treecode_Eval                              # Treecode_Eval                 is from   src/lib/compiler/back/low/treecode/treecode-eval.api
                     where
                         tcf == tcf;                            # "tcf" == "treecode_form".
    )
    : (weak) Base_Pseudo_Ops                                    # Base_Pseudo_Ops               is from   src/lib/compiler/back/low/mcg/base-pseudo-ops.api
    {
        package tcf =  tcf;                                     # Export to client packages

        stipulate
            package ndn                                         # "ndn" == "endian".
                = 
                little_endian_pseudo_op_g (                     # little_endian_pseudo_op_g     is from   src/lib/compiler/back/low/mcg/little-endian-pseudo-op-g.pkg
                    #
                    package tcf =  tcf;                         # "tcf" == "treecode_form".
                    package tce =  tce;                         # "tce" == "treecode_eval".
                    #
                    icache_alignment =  16;                     # Cache line size.
                    max_alignment    =  THE 7;                  # Maximum alignment for internal labels.
                    #
                    nop = { size=>1, en=>0ux90: one_word_unt::Unt };    #  Encoding for no-op.
                );

            package gap                                         # "gap" == "gnu_assembler_pseudo_ops".
                = 
                gnu_assembler_pseudo_op_g (                     # gnu_assembler_pseudo_op_g     is from   src/lib/compiler/back/low/mcg/gnu-assembler-pseudo-op-g.pkg
                    #
                    package tcf = tcf;                          # "tcf" == "treecode_form".
                    #
                    label_format =  { global_symbol_prefix   => "",
                                      anonymous_label_prefix => "L"
                                    };
                );
        herein

            Pseudo_Op(X)
                =
                pbt::Pseudo_Op( tcf::Label_Expression, X );

            fun error msg
                =
                lem::error ("gnu_assembler_pseudo_ops.", msg);

            current_pseudo_op_size_in_bytes =  ndn::current_pseudo_op_size_in_bytes;
            put_pseudo_op                   =  ndn::put_pseudo_op;

            label_expression_to_string      =  gap::label_expression_to_string;
            pseudo_op_to_string             =  gap::to_string;
            define_private_label            =  gap::define_private_label;
        end;
    };
end;

## COPYRIGHT (c) 2002 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