abel :: State CompileState Label
genLabel = do
  lb <- use labels
  labels += 1
  return $ Label lb

arith And = AND
arith Xor = XOR
arith Or  = OR
arith Add = ADD
arith Mul = MUL

comp  Cmpe = CMPE
com
alreadyDefinedPtr :: Var -> State CompileState Bool
alreadyDefinedPtr v = do
  vars <- use (frame.ptrVars)
  return $ case lookup v vars of
    Nothing -> False
    Just _  -> True
alreadyDefinedPtr v = do
  vars <- use (frame.ptrVars)
  return $ case lookup v vars of
    Nothing -> False
    Just _  -> True