module Bindings.Bfd.Disasm.I386.Term where

import Bindings.Bfd.Disasm.I386.Operand


data Term = Term `Add` Term
          | Term `BitAnd` Term
          | Term `BitExclOr` Term
          | Term `BitOr` Term
          | Term `BitTest` Term
          | Term `GreaterOrEqual` Term
          | Term `Subtract` Term
          | If Term Term Term
          | Flag Char Term             -- right hand side
          -- terminals
          | Opr Int Operand            -- Int is width
          | Stk Int Int
          | Reg String
          | Flg Char
          | Con Int                    -- assumed to be 64-bits
          | Udf                        -- undefined
          | Nul
          | Todo                       -- FIXME
     deriving (Show)

type Assign = (Term, Term)