[][src]Module falcon::memory

Efficient memory representations.

Falcon implements a layered memory model. When analyses interact with memory, they interact directly with the top layer. When a memory layer cannot satisfy an analysis' request, it checks the layer beneath it. I believe angr implements a similar model.

The performance of the memory model has tremendous impact on the performance of memory-dependent analyses. In practice, this layered approach greatly speeds up the runtime of of these analyses.

If you choose to implement your own memory model, you should also see the TranslationMemory trait in the translator module. Implementation of this trait will allow the translator to lift instructions from your memory model.

Modules

backing

A flat representation of memory provided by lifters, typically used in a read-only fashion

paged

A memory model with copy-on-write pages, which attempts not to split values and accepts a memory backing.

Structs

MemoryPermissions

RWX permissions for memory.

Traits

Value

In order for a value to be used in the paged memory model, it must implement this trait.