packages feed

bytepatch-0.4.0: src/Binrep/Type/Assembly.hs

module Binrep.Type.Assembly where

import GHC.Generics ( Generic )
import Data.Data ( Typeable, Data )

import Data.ByteString.Short ( ShortByteString )
import Data.ByteString ( ByteString )
import Data.Text.Short ( ShortText )
import Data.Aeson ( ToJSON, FromJSON )

import Binrep.Extra.HexByteString

import Binrep

data Arch
  = ArmV8ThumbLE
    deriving stock (Generic, Typeable, Data, Show, Eq)

newtype MachineInstr (arch :: Arch) = MachineInstr { getMachineInstr :: ShortByteString }
    deriving stock (Generic, Typeable, Data)
    deriving Show via (Hex ShortByteString)

newtype MachineCode  (arch :: Arch) = MachineCode  { getMachineCode  :: ByteString }
    deriving stock (Generic, Typeable, Data)
    deriving Eq via ByteString
    deriving Show via (Hex ByteString)
    deriving (BLen, Put, Get) via ByteString

newtype AsmInstr     (arch :: Arch) = AsmInstr     { getAsmInstr     :: ShortText }
    deriving stock (Generic, Typeable, Data, Show, Eq)
    deriving (ToJSON, FromJSON) via ShortText