DEFINITION MODULE GenProcs;

FROM items IMPORT ITEM, REGISTER, Operator, ConditionCode, GlobalLabel;

EXPORT QUALIFIED GenSimpleDyadicOp, GenMove, GenMovea, 
                 GenSubImm, GenShift, CheckedGenCmp, GenCmp, GenClr,
                 GenTableEntry, GenBcc, GenRelBranch,
		 GenMoveToCCR, GenMoveImm, GenMoveQ, 
		 GenTst, GenSubaImm, GenAddaImm, GenSuba, GenExg,
		 GenCmpAddress, GenCmpImm, GenNeg, GenMoveReg, GenRtn,
		 GenLea, GenMoveByte, GenAddImm, GenAndImm,
		 GenShiftImm, GenLabel, GenBra, GenIndexedMovea,
		 GenJump, GenPushLabel, GenPea, GenLink, GenUnlink,
		 GenMoveaReg, GenBsr, GenJsr, GenDBra, GenJsrToExternalProc,
                 GenCom, GenXorImm, GenJsrToGlobalLabel, GenMoveMultipleWords,
                 GenMoveToReg, GenComment, GenLeaExternal, GenUnixCall,
                 GenDataAndStringFrames, GenEndOfCodeSequence,
                 GenJmpToGlobalLabel, GenLeaGlobalLabel,
                 GenRangeCheckSequence, GenBsrToRangeCheck, GenLongBcc,
		 SetFrameSize, GenNamedCall;

PROCEDURE GenDataAndStringFrames ();
PROCEDURE GenEndOfCodeSequence ();
PROCEDURE GenMove (VAR source, dest : ITEM);
PROCEDURE GenMovea (VAR item : ITEM; AddrReg : REGISTER);
PROCEDURE GenMoveaReg (reg, AddrReg : REGISTER);
PROCEDURE GenLeaExternal (offset : CARDINAL; AddrReg : REGISTER);
PROCEDURE GenMoveByte (VAR opd1, opd2 : ITEM);
PROCEDURE GenMoveToReg (VAR item : ITEM; reg : REGISTER);
PROCEDURE GenPea (VAR item : ITEM);
PROCEDURE GenLea (VAR item : ITEM; AddrReg : REGISTER);
PROCEDURE GenMoveReg (reg : REGISTER; VAR dest : ITEM);
PROCEDURE CheckedGenCmp (cc : ConditionCode; VAR opd1, opd2 : ITEM) : ConditionCode;
PROCEDURE GenCmp (VAR opd1, opd2 : ITEM);
PROCEDURE GenCmpAddress (VAR opd : ITEM; AddrReg : REGISTER);
PROCEDURE GenCmpImm (data : INTEGER; VAR item : ITEM);
PROCEDURE GenXorImm (data : INTEGER; VAR item : ITEM);
PROCEDURE GenExg (VAR opd1, opd2 : ITEM);
PROCEDURE GenSimpleDyadicOp (op : Operator; VAR source, dest : ITEM);
PROCEDURE GenSubImm (imm : INTEGER; VAR item : ITEM);
PROCEDURE GenAddImm (imm : INTEGER; VAR item : ITEM);
PROCEDURE GenAndImm (imm : INTEGER; VAR item : ITEM);
PROCEDURE GenShift (Op : Operator; VAR opd1, opd2 : ITEM);
PROCEDURE GenShiftImm (op : Operator; imm : INTEGER;
                                 VAR item : ITEM);
PROCEDURE GenTableEntry ();
PROCEDURE GenBcc (cc : ConditionCode);
PROCEDURE GenBra ();
PROCEDURE GenBsr ();
PROCEDURE GenJsr (VAR item : ITEM);
PROCEDURE GenRelBranch (cc : ConditionCode;
                         lab : CARDINAL);
PROCEDURE GenIndexedMovea (VAR reg : ITEM; AddressReg : REGISTER);
PROCEDURE GenJump (VAR dest : ITEM);
PROCEDURE GenPushLabel ();
PROCEDURE GenMoveToCCR (value : CARDINAL);
PROCEDURE GenMoveImm (data : INTEGER; VAR dest : ITEM);
PROCEDURE GenMoveQ (data : INTEGER; dest : REGISTER);
PROCEDURE GenClr (VAR item : ITEM);
PROCEDURE GenTst (VAR item : ITEM);
PROCEDURE GenSubaImm (imm : INTEGER; AddrReg : REGISTER);
PROCEDURE GenAddaImm (imm : INTEGER; AddrReg : REGISTER);
PROCEDURE GenSuba (VAR item : ITEM; AddrReg : REGISTER);
PROCEDURE GenNeg (VAR item : ITEM);
PROCEDURE GenCom (VAR item : ITEM);
PROCEDURE GenRtn ();
PROCEDURE GenLabel ();
PROCEDURE GenLink (AddrReg : REGISTER; disp : INTEGER);
PROCEDURE GenUnlink (AddrReg : REGISTER);
PROCEDURE GenDBra (reg : REGISTER; lab : CARDINAL);
PROCEDURE GenJsrToGlobalLabel (sub : GlobalLabel);
PROCEDURE GenComment (str : ARRAY OF CHAR);
PROCEDURE GenMoveMultipleWords (VAR source : ITEM; LWBreg, UPBreg : REGISTER);
PROCEDURE GenUnixCall (Callno : CARDINAL);
PROCEDURE GenJmpToGlobalLabel (sub : GlobalLabel);
PROCEDURE GenLeaGlobalLabel (lab : GlobalLabel; AddrReg : REGISTER);
PROCEDURE GenRangeCheckSequence;
PROCEDURE GenBsrToRangeCheck;
PROCEDURE GenLongBcc (cc : ConditionCode);
PROCEDURE GenJsrToExternalProc (ModuleDisp, ProcNumber : CARDINAL);
PROCEDURE SetFrameSize (Hwm : CARDINAL);
PROCEDURE GenNamedCall (CallName : ARRAY OF CHAR);
END GenProcs.



