packages feed

assembler-0.0.1: src/Main.hs

-----------------------------------------------------------------------------
--
-- Module      :  Main
-- Copyright   : (c) Jeff Douglas
-- License     :  BSD3
--
-- Maintainer  : Jeff Douglas
-- Stability   : experimental
-- Portability : portable
--
-- |
--
-----------------------------------------------------------------------------

module Main where

import qualified Text.Assembler.PPC64 as PPC64

import Control.Applicative hiding ((<|>),many)

import System.IO
import System.Environment
import Text.Parsec
import Text.Parsec.String
import qualified Data.Map as M
import Data.List
import qualified Data.ByteString.Lazy as BL
import Data.Binary.Put

main :: IO ()
main = do
  args <- getArgs
  let arch = head args
  src <- getContents
  assembler src arch

assembler src isa = do
  case isa of
    "ppc64" -> case runParser PPC64.parseInstructions () "stdin" src of
        Left err -> print err
        Right val -> do
          let s = runPut (putWord32be $head val)
          BL.writeFile "out.bin" $ s