packages feed

bindings-bfd-1.2.0.0: src/Bindings/Bfd/Disasm/I386/EffectiveAddr.hs

module Bindings.Bfd.Disasm.I386.EffectiveAddr where

import Bindings.Bfd.Disasm.I386.Register


data EffectiveAddr = EA {
                          base   :: Maybe Register
                        , index  :: Maybe Register
                        , scale  :: Int
                     }
                   | NoEA
     deriving (Eq, Ord, Show)


registers
   :: EffectiveAddr
   -> [Register]
registers (EA (Just r1)  Nothing  _) =      [r1]
registers (EA  Nothing  (Just r2) _) =      [r2]
registers (EA (Just r1) (Just r2) _) = r1 : [r2]
registers x                          = error $ "EffectiveAddr.registers: " ++ show x