[project @ 2000-11-27 10:51:14 by sewardj]
authorsewardj <unknown>
Mon, 27 Nov 2000 10:51:14 +0000 (10:51 +0000)
committersewardj <unknown>
Mon, 27 Nov 2000 10:51:14 +0000 (10:51 +0000)
Nuked.  (Decided not to go this route in the end).

ghc/compiler/nativeGen/AsmAssemble.lhs [deleted file]
ghc/compiler/nativeGen/AssembleInfo.lhs [deleted file]

diff --git a/ghc/compiler/nativeGen/AsmAssemble.lhs b/ghc/compiler/nativeGen/AsmAssemble.lhs
deleted file mode 100644 (file)
index f5ff6d9..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-%
-% (c) The AQUA Project, Glasgow University, 1993-2000
-%
-\section[AsmAssemble]{Assemble instructions into memory}
-
-\begin{code}
-module AsmAssemble ( asmAssemble ) where
-
-#include "HsVersions.h"
-
-import MachMisc                ( Instr(..) )
---import PprMach               ( pprInstr )    -- Just for debugging
---import RegAllocInfo
-
-import FiniteMap       ( FiniteMap, lookupFM, listToFM, filterFM )
-import Outputable
-import CLabel          ( CLabel, pprCLabel, isAsmTemp )
-
-import Foreign         ( Ptr, Word8, plusPtr, nullPtr, poke, mallocBytes )
-import List            ( mapAccumL )
-\end{code}
-
-This is the generic assembler.  It assembles code into memory, knowing
-not very much at all about instructions.  For simplicity a 2 pass
-scheme is used.
-
-\begin{code}
-asmAssemble :: FiniteMap CLabel (Ptr Word8)            -- incoming address map
-           -> [[Instr]]                                -- to assemble
-           -> IO (FiniteMap CLabel (Ptr Word8))        -- contribs to addr map
-asmAssemble in_map instrss
-   = do 
-        -- FIRST PASS: find out the insn lengths
-        let instrs = concat instrss
-        let objects = map (assembleInstr nullPtr Nothing) instrs
-        -- Extract the (label,offset) pairs for any labels defined in it
-        let (tot_len, maybe_label_offsets)
-                = mapAccumL getOffset 0 (zip instrs objects)
-        -- Now we know the size of the output; malloc accordingly
-        base_addr
-           <- mallocBytes tot_len
-        -- Build an env to map all local labels to their addresses
-        let local_label_env
-               = listToFM [(lab, base_addr `plusPtr` off) 
-                            | Just (lab,off) <- maybe_label_offsets]
-        
-        -- SECOND PASS: assemble for real
-        let find_label :: CLabel -> Ptr Word8
-            find_label lab
-               = case lookupFM local_label_env lab of
-                    Just xx -> xx
-                    Nothing -> case lookupFM in_map lab of
-                                  Just yy -> yy
-                                  Nothing -> pprPanic "asmAssemble1: can't find" 
-                                                      (pprCLabel lab)
-        let (_, final_bytess)
-               = mapAccumL (doOneInsn find_label) base_addr instrs
-
-        -- We now have the final bytes; blast 'em into memory
-        pokeList base_addr (concat final_bytess)
-
-        -- Remove labels of only local scope from the local label env
-        let clean_label_env
-               = filterFM (\k e -> not (isAsmTemp k)) local_label_env
-
-        return clean_label_env
-
-pokeList :: Ptr Word8 -> [Word8] -> IO ()
-pokeList addr []     = return ()
-pokeList addr (b:bs) = poke addr b >> pokeList (addr `plusPtr` 1) bs
-   
-
-                
-doOneInsn :: (CLabel -> Ptr Word8) -> Ptr Word8 -> Instr -> (Ptr Word8, [Word8])
-doOneInsn find_label addr insn
-   = let bytes = assembleInstr addr (Just find_label) insn
-     in  (addr `plusPtr` (length bytes), bytes)
-
-
-getOffset :: Int -> (Instr,[Word8]) -> (Int, Maybe (CLabel,Int))
-getOffset curr_off (LABEL l, bytes)
-  = (curr_off + length bytes, Just (l, curr_off))
-getOffset  curr_off (not_label, bytes)
-  = (curr_off + length bytes, Nothing)
-
-
-assembleInstr :: Ptr Word8 -> Maybe (CLabel -> Ptr Word8) -> Instr -> [Word8]
-assembleInstr = undefined
-\end{code}
diff --git a/ghc/compiler/nativeGen/AssembleInfo.lhs b/ghc/compiler/nativeGen/AssembleInfo.lhs
deleted file mode 100644 (file)
index b63884a..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-%
-% (c) The AQUA Project, Glasgow University, 1996-1998
-%
-\section[AssembleInfo]{Machine-specific info used for assembly}
-
-The (machine-independent) assembler itself is in @AsmAssemble@.
-
-\begin{code}
-#include "nativeGen/NCG.h"
-
-module AssembleInfo ( assembleInstr ) where
-
-#include "HsVersions.h"
-
-import MachMisc
-import CLabel          ( CLabel )
-import Outputable
-import Foreign         ( Word8, Ptr )
-\end{code}
-
-%************************************************************************
-%*                                                                     *
-\subsection{@assembleInstr@; generate bytes for an insn}
-%*                                                                     *
-%************************************************************************
-
-@assembleInstr@ returns the bytes (Word8's) for a given instruction.
-It takes the address where the instruction is to be placed, and an
-environment mapping C labels to addresses.  The latter two are needed
-for calculating address offsets in call, jump, etc, instructions.
-The mapping can be a Nothing, indicating that the caller doesn't care
-what the resulting offsets are.  If that's so, @assembleInstr@ is 
-being called as the first pass of 2-pass assembly.  For the final
-pass, the correct mapping (and base address) must of course be
-supplied.
-
-\begin{code}
-
-assembleInstr :: Ptr Word8 -> Maybe (CLabel -> Ptr Word8) -> Instr -> [Word8]
-
-#if alpha_TARGET_ARCH
-assembleInstr base_addr label_map instr
-   = panic "assembleInstr(Alpha)"
-#endif {- alpha_TARGET_ARCH -}
-assembleInstr base_addr label_map instr
-   = panic "assembleInstr(Alpha)"
-#if sparc_TARGET_ARCH
-#endif {- sparc_TARGET_ARCH -}
--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-#if i386_TARGET_ARCH
-assembleInstr base_addr label_map instr = case instr of
-    _ -> []
-
-#if 0
-    MOV    sz src dst  -> usageRW src dst
-    MOVZxL sz src dst  -> usageRW src dst
-    MOVSxL sz src dst  -> usageRW src dst
-    LEA    sz src dst  -> usageRW src dst
-    ADD    sz src dst  -> usageRM src dst
-    SUB    sz src dst  -> usageRM src dst
-    IMUL   sz src dst  -> usageRM src dst
-    IQUOT  sz src dst  -> usageRM src dst
-    IREM   sz src dst  -> usageRM src dst
-    AND    sz src dst  -> usageRM src dst
-    OR     sz src dst  -> usageRM src dst
-    XOR    sz src dst  -> usageRM src dst
-    NOT    sz op       -> usageM op
-    NEGI   sz op       -> usageM op
-    SHL    sz imm dst  -> usageM dst
-    SAR    sz imm dst  -> usageM dst
-    SHR    sz imm dst  -> usageM dst
-    BT     sz imm src  -> mkRU (use_R src) []
-
-    PUSH   sz op       -> mkRU (use_R op) []
-    POP    sz op       -> mkRU [] (def_W op)
-    TEST   sz src dst  -> mkRU (use_R src ++ use_R dst) []
-    CMP    sz src dst  -> mkRU (use_R src ++ use_R dst) []
-    SETCC  cond op     -> mkRU [] (def_W op)
-    JXX    cond lbl    -> mkRU [] []
-    JMP    dsts op     -> mkRU (use_R op) []
-    CALL   imm         -> mkRU [] callClobberedRegs
-    CLTD               -> mkRU [eax] [edx]
-    NOP                        -> mkRU [] []
-
-    GMOV   src dst     -> mkRU [src] [dst]
-    GLD    sz src dst  -> mkRU (use_EA src) [dst]
-    GST    sz src dst  -> mkRU (src : use_EA dst) []
-
-    GLDZ   dst         -> mkRU [] [dst]
-    GLD1   dst         -> mkRU [] [dst]
-
-    GFTOD  src dst     -> mkRU [src] [dst]
-    GFTOI  src dst     -> mkRU [src] [dst]
-
-    GDTOF  src dst     -> mkRU [src] [dst]
-    GDTOI  src dst     -> mkRU [src] [dst]
-
-    GITOF  src dst     -> mkRU [src] [dst]
-    GITOD  src dst     -> mkRU [src] [dst]
-
-    GADD   sz s1 s2 dst        -> mkRU [s1,s2] [dst]
-    GSUB   sz s1 s2 dst        -> mkRU [s1,s2] [dst]
-    GMUL   sz s1 s2 dst        -> mkRU [s1,s2] [dst]
-    GDIV   sz s1 s2 dst        -> mkRU [s1,s2] [dst]
-
-    GCMP   sz src1 src2        -> mkRU [src1,src2] []
-    GABS   sz src dst  -> mkRU [src] [dst]
-    GNEG   sz src dst  -> mkRU [src] [dst]
-    GSQRT  sz src dst  -> mkRU [src] [dst]
-    GSIN   sz src dst  -> mkRU [src] [dst]
-    GCOS   sz src dst  -> mkRU [src] [dst]
-    GTAN   sz src dst  -> mkRU [src] [dst]
-
-    COMMENT _          -> noUsage
-    SEGMENT _          -> noUsage
-    LABEL   _          -> noUsage
-    ASCII   _ _                -> noUsage
-    DATA    _ _                -> noUsage
-    DELTA   _           -> noUsage
-    _                  -> pprPanic "regUsage(x86)" empty
-#endif
-
-#endif {- i386_TARGET_ARCH -}
--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-\end{code}