PreviousUpNext

15.4.331  src/lib/compiler/back/low/mcg/pseudo-op-g.pkg

## pseudo-ops-g.pkg

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



# lowhalf pseudo-ops.
# Ties together the assembler and client pseudo-ops




stipulate
    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 in:
    #
    #    src/lib/compiler/back/low/main/intel32/backend-lowhalf-intel32-g.pkg
    #
    generic package   pseudo_op_g   (
        #             ===========
        #
        package cpo:  Client_Pseudo_Ops;                                        # Client_Pseudo_Ops     is from   src/lib/compiler/back/low/mcg/client-pseudo-ops.api
    )
    : (weak) Pseudo_Ops                                                         # Pseudo_Ops            is from   src/lib/compiler/back/low/mcg/pseudo-op.api
    {
        # Export to client packages:
        #
        package cpo =  cpo;                                                     # "cpo" == "client_pseudo_ops".
        package tcf =  cpo::bpo::tcf;                                           # "tcf" == "treecode_form".

        stipulate
            package bpo =  cpo::bpo;                                            # "bpo" == "base_pseudo_ops".    
        herein

            Pseudo_Op =   bpo::Pseudo_Op( cpo::Pseudo_Op );

            fun pseudo_op_to_string (pbt::EXT extension) =>  cpo::pseudo_op_to_string  extension;
                pseudo_op_to_string pseudo_op            =>  bpo::pseudo_op_to_string  pseudo_op;
            end;

            fun current_pseudo_op_size_in_bytes (pbt::EXT extension, loc) =>  cpo::current_pseudo_op_size_in_bytes (extension, loc);
                current_pseudo_op_size_in_bytes (pseudo_op,          loc) =>  bpo::current_pseudo_op_size_in_bytes (pseudo_op,  loc);
            end;

            fun put_pseudo_op (pseudo_op' as { pseudo_op, loc, put_byte } )
                = 
                case pseudo_op
                    #
                    pbt::EXT ext =>  cpo::put_pseudo_op { pseudo_op=>ext, loc, put_byte };
                    _            =>  bpo::put_pseudo_op  pseudo_op';
                esac;


            fun adjust_labels (pbt::EXT ext, loc) =>  cpo::adjust_labels (ext, loc);
                adjust_labels _                   =>  FALSE;
            end;
        end;
    };
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