## 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.pkgherein
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.