3a_asm: init from http://hackage.haskell.org/package/assembler
[calu.git] / 3a_asm / Main.hs
1 -----------------------------------------------------------------------------
2 --
3 -- Module      :  Main
4 -- Copyright   : (c) Jeff Douglas
5 -- License     :  BSD3
6 --
7 -- Maintainer  : Jeff Douglas
8 -- Stability   : experimental
9 -- Portability : portable
10 --
11 -- |
12 --
13 -----------------------------------------------------------------------------
14
15 module Main where
16
17 import PPC64
18
19 import Control.Applicative hiding ((<|>),many)
20
21 import System.IO
22 import System.Environment
23 import Text.Parsec
24 import Text.Parsec.String
25 import qualified Data.Map as M
26 import Data.List
27 import qualified Data.ByteString.Lazy as BL
28 import Data.Binary.Put
29
30 main :: IO ()
31 main = do
32   args <- getArgs
33   let arch = head args
34   src <- getContents
35   assembler src arch
36
37 assembler src isa = do
38   case isa of
39     "ppc64" -> case runParser PPC64.parseInstructions () "stdin" src of
40         Left err -> print err
41         Right val -> do
42           let s = runPut (putWord32be $ head val)
43           BL.writeFile "out.bin" $ s