%
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
-% $Id: AbsCSyn.lhs,v 1.52 2003/05/14 09:13:52 simonmar Exp $
+% $Id: AbsCSyn.lhs,v 1.56 2003/11/17 14:47:53 simonmar Exp $
%
\section[AbstractC]{Abstract C: the last stop before machine code}
raw assembler/machine code.
\begin{code}
-module AbsCSyn {- (
- -- export everything
- AbstractC(..),
- C_SRT(..)
- CStmtMacro(..),
- CExprMacro(..),
- CAddrMode(..),
- ReturnInfo(..),
- mkAbstractCs, mkAbsCStmts, mkAlgAltsCSwitch,
- mkIntCLit,
- mkAbsCStmtList,
- mkCCostCentre,
-
- -- RegRelatives
- RegRelative(..),
-
- -- registers
- MagicId(..), node, infoptr,
- isVolatileReg,
- CostRes(Cost)
- )-} where
+module AbsCSyn where -- export everything
#include "HsVersions.h"
@AbstractC@ is a list of Abstract~C statements, but the data structure
is tree-ish, for easier and more efficient putting-together.
\begin{code}
-absCNop = AbsCNop
-
data AbstractC
= AbsCNop
| AbsCStmts AbstractC AbstractC
= ENTRY_CODE
| ARG_TAG -- stack argument tagging
| GET_TAG -- get current constructor tag
- | UPD_FRAME_UPDATEE
| CCS_HDR
| BYTE_ARR_CTS -- used when passing a ByteArray# to a ccall
| PTRS_ARR_CTS -- similarly for an Array#
type VirtualHeapOffset = HeapOffset
type VirtualSpOffset = Int
-
-type HpRelOffset = HeapOffset
-type SpRelOffset = Int
\end{code}
%************************************************************************