mirror of
https://github.com/GaloisInc/macaw.git
synced 2024-12-01 00:22:24 +03:00
More haddock updates for function argument information.
This commit is contained in:
parent
fcff1b7c3d
commit
60a3d39e98
@ -674,15 +674,22 @@ memValToCrucible memRep val =
|
|||||||
traverse (memValToCrucible eltMemRepr) v
|
traverse (memValToCrucible eltMemRepr) v
|
||||||
_ -> unexpectedMemVal
|
_ -> unexpectedMemVal
|
||||||
|
|
||||||
-- | Given a Boolean condition and two symbolic values associated with a Macaw type, return
|
-- | Given a Boolean condition and two symbolic values associated with
|
||||||
-- a value denoting the first value if condition is true and second value otherwise.
|
-- a Macaw type, return a value denoting the first value if condition
|
||||||
|
-- is true and second value otherwise.
|
||||||
|
--
|
||||||
|
-- arg1 : Symbolic interface
|
||||||
|
-- arg2 : Description of memory layout of value
|
||||||
|
-- arg3 : Condition
|
||||||
|
-- arg4 : Value if condition is true
|
||||||
|
-- arg5 : Value if condition is false.
|
||||||
muxMemReprValue ::
|
muxMemReprValue ::
|
||||||
IsSymInterface sym =>
|
IsSymInterface sym =>
|
||||||
sym -> -- ^ Symbolic interface.
|
sym ->
|
||||||
MemRepr ty -> -- ^ Description of memory layout of value
|
MemRepr ty ->
|
||||||
RegValue sym BoolType -> -- ^ Condition
|
RegValue sym BoolType ->
|
||||||
RegValue sym (ToCrucibleType ty) -> -- ^ Value if condition is true
|
RegValue sym (ToCrucibleType ty) ->
|
||||||
RegValue sym (ToCrucibleType ty) -> -- ^ Value if condition is false.
|
RegValue sym (ToCrucibleType ty) ->
|
||||||
IO (RegValue sym (ToCrucibleType ty))
|
IO (RegValue sym (ToCrucibleType ty))
|
||||||
muxMemReprValue sym memRep cond x y =
|
muxMemReprValue sym memRep cond x y =
|
||||||
case memRep of
|
case memRep of
|
||||||
@ -738,15 +745,24 @@ doReadMem sym mem ptrWidth memRep ptr = hasPtrClass ptrWidth $
|
|||||||
assert sym isValid (AssertFailureSimError "Invalid memory load")
|
assert sym isValid (AssertFailureSimError "Invalid memory load")
|
||||||
return crucVal
|
return crucVal
|
||||||
|
|
||||||
|
-- | Conditional memory read
|
||||||
|
--
|
||||||
|
-- arg1 : Symbolic Interface
|
||||||
|
-- arg2 : Memory implementation
|
||||||
|
-- arg3 : Width of ptr
|
||||||
|
-- arg4 : What/how we are reading
|
||||||
|
-- arg5 : Condition
|
||||||
|
-- arg6 : Address to read
|
||||||
|
-- arg7 : Default answer if condition is false
|
||||||
doCondReadMem ::
|
doCondReadMem ::
|
||||||
IsSymInterface sym =>
|
IsSymInterface sym =>
|
||||||
sym ->
|
sym ->
|
||||||
MemImpl sym ->
|
MemImpl sym ->
|
||||||
M.AddrWidthRepr ptrW {- ^ Width of ptr -} ->
|
M.AddrWidthRepr ptrW ->
|
||||||
MemRepr ty {- ^ What/how we are reading -} ->
|
MemRepr ty ->
|
||||||
RegValue sym BoolType {- ^ Condition -} ->
|
RegValue sym BoolType ->
|
||||||
LLVMPtr sym ptrW -> -- ^ Address to read
|
LLVMPtr sym ptrW ->
|
||||||
RegValue sym (ToCrucibleType ty) {- ^ Answer is condition is false -} ->
|
RegValue sym (ToCrucibleType ty) ->
|
||||||
IO (RegValue sym (ToCrucibleType ty))
|
IO (RegValue sym (ToCrucibleType ty))
|
||||||
doCondReadMem sym mem ptrWidth memRep cond ptr def = hasPtrClass ptrWidth $
|
doCondReadMem sym mem ptrWidth memRep cond ptr def = hasPtrClass ptrWidth $
|
||||||
do -- Check pointer is valid.
|
do -- Check pointer is valid.
|
||||||
@ -782,14 +798,21 @@ doCondReadMem sym mem ptrWidth memRep cond ptr def = hasPtrClass ptrWidth $
|
|||||||
muxMemReprValue sym memRep cond crucVal def
|
muxMemReprValue sym memRep cond crucVal def
|
||||||
|
|
||||||
-- | Write a Macaw value to memory.
|
-- | Write a Macaw value to memory.
|
||||||
|
--
|
||||||
|
-- arg1 : Symbolic Interface
|
||||||
|
-- arg2 : Heap prior to write
|
||||||
|
-- arg3 : Width of ptr
|
||||||
|
-- arg4 : What/how we are writing
|
||||||
|
-- arg5 : Address to write to
|
||||||
|
-- arg6 : Value to write
|
||||||
doWriteMem ::
|
doWriteMem ::
|
||||||
IsSymInterface sym =>
|
IsSymInterface sym =>
|
||||||
sym ->
|
sym ->
|
||||||
MemImpl sym -> -- ^ Heap prior to write
|
MemImpl sym ->
|
||||||
M.AddrWidthRepr ptrW -> -- ^ Width of ptr
|
M.AddrWidthRepr ptrW ->
|
||||||
MemRepr ty -> -- ^ What/how we are writing
|
MemRepr ty ->
|
||||||
LLVMPtr sym ptrW -> -- ^ Address to write to
|
LLVMPtr sym ptrW ->
|
||||||
RegValue sym (ToCrucibleType ty) -> -- ^ Value to write
|
RegValue sym (ToCrucibleType ty) ->
|
||||||
IO (MemImpl sym)
|
IO (MemImpl sym)
|
||||||
doWriteMem sym mem ptrWidth memRep ptr val = hasPtrClass ptrWidth $
|
doWriteMem sym mem ptrWidth memRep ptr val = hasPtrClass ptrWidth $
|
||||||
do ok <- isValidPtr sym mem ptrWidth ptr
|
do ok <- isValidPtr sym mem ptrWidth ptr
|
||||||
|
Loading…
Reference in New Issue
Block a user