package asli
Module LibASL.EvalSource
ASL evaluator
It is an error to have multiple function definitions with conflicting types. * But, for historical reasons, we still allow multiple definitions and later * definitions override earlier definitions.
Lookup table for IMPLEMENTATION_DEFINED values
Scopes
Basically just a mutable binding
Mutable bindings
Evaluation functions
Evaluate bitslice of instruction opcode
Evaluate instruction decode pattern match
Evaluate list of expressions
Create uninitialized value at given type
- For any scalar type, this is the value VUninitialized.
- For any composite type, all elements are set to uninitialized values
todo: bitvectors are currently set to UNKNOWN because the bitvector representation currently in use cannot track uninitialized bits
Evaluate UNKNOWN at given type
Evaluate pattern match
Evaluate bitslice bounds
Evaluate expression
Evaluate L-expression in write-mode (i.e., this is not a read-modify-write)
Evaluate L-expression in read-modify-write mode.
1. The old value of the L-expression is read. 2. The function 'modify' is applied to the old value 3. The result is written back to the L-expression.
Evaluate list of statements
Evaluate statement
Evaluate call to function or procedure
val eval_funcall :
AST.l ->
Env.t ->
AST.ident ->
Value.value list ->
Value.value list ->
Value.valueEvaluate call to function
val eval_proccall :
AST.l ->
Env.t ->
AST.ident ->
Value.value list ->
Value.value list ->
unitEvaluate call to procedure
Evaluate instruction decode case
val eval_decode_alt :
AST.l ->
Env.t ->
AST.decode_alt ->
Value.value list ->
Value.value ->
boolEvaluate instruction decode case alternative
Evaluate instruction encoding
Creating environment from global declarations
Construct environment from global declarations