PreviousUpNext

15.3.143  src/lib/compiler/back/low/regor/arch-spill-instruction.api

## arch-spill-instruction.api

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



# Architecture specific instructions to emit when spilling an instruction.


# TODO: Some day, all these interface functions will be sensitive to        XXX BUGGO FIXME
#       the size being spilled or reloaded --- but today is not that day!

stipulate
    package rkj =  registerkinds_junk;                                  # registerkinds_junk            is from   src/lib/compiler/back/low/code/registerkinds-junk.pkg
herein

    api Architecture_Specific_Spill_Instructions {
        #
        package mcf: Machcode_Form;                                     # Machcode_Form                 is from   src/lib/compiler/back/low/code/machcode-form.api

        spill_to_ea
            :
            rkj::Registerkind
            ->
            (rkj::Codetemp_Info, mcf::Effective_Address)
            -> 
            { code:         List( mcf::Machine_Op ),
              prohibitions: List( rkj::Codetemp_Info ),
              make_reg:     Null_Or( rkj::Codetemp_Info )
            };

        reload_from_ea
            :
            rkj::Registerkind
            ->
            (rkj::Codetemp_Info, mcf::Effective_Address)
            ->
            { code:         List( mcf::Machine_Op ),
              prohibitions: List( rkj::Codetemp_Info ),
              make_reg:     Null_Or( rkj::Codetemp_Info )
            };

        spill
            :  
            rkj::Registerkind
            -> 
            ( mcf::Machine_Op,
              rkj::Codetemp_Info,
              mcf::Effective_Address
            )
            -> 
            { code:         List( mcf::Machine_Op ),
              prohibitions: List( rkj::Codetemp_Info ),
              make_reg:     Null_Or( rkj::Codetemp_Info )
            };

        reload
            :
            rkj::Registerkind
            ->
            ( mcf::Machine_Op,
              rkj::Codetemp_Info,
              mcf::Effective_Address
            )
            -> 
            { code:             List( mcf::Machine_Op ),
              prohibitions:     List( rkj::Codetemp_Info ),
              make_reg:         Null_Or( rkj::Codetemp_Info )
            };
    };
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