An operationrun represents a single pcode operation with its concrete output destination and value
The index of the pcode operation within the execution
The clock tick on which was executed the instruction of which this pcode operation is a part
The pcode opcode (as defined by Ghidra's slaspec) of this pcode operation
The number of bytes outputted by this operation
The memory bank in which this operation stored its output value
The address within the given memory bank at which this operation stored its output value
The value of the output of this operation. Will be `null` if the value cannot be determined from the trace
a hex-encoded version of `val`. Individual bytes will be replaced with `??` if their values cannot be determined from the trace
For LOAD operations, the memory address which was read; for CBRANCH operations, the potential (non-fallthrough) branch target.
The bank of the `assocd_addr` (for LOAD operations, the data memory address space; for CBRANCH, the instruction memory address space)
For LOAD operations, the number of bytes read from `assocd_addr`; For CBRANCH operations, the size of the PC register.
index
tick
bank
addr
assocd_bank
assocd_addr
val
assocd_bank
assocd_addr
An `instructionrun` represents a single run of an architectural instruction at a given point in time within the trace
The clock tick on which the instruction occurred.
The value of the program counter register just before the instruction was executed
The disassembly of the instruction
pc
tick
A `functionrun` represents a single run of a function
The program counter of the instruction immediately preceeding this functionrun within the trace
The program counter of the first instruction executed in the trace within this functionrun
The clock tick of the first instructionrun occurring within this functionrun
The index of the first operationrun occurring wihtin this functionrun
The index of the final operationrun occurring within this functionrun
The value returned by this functionrun
Number of not-yet-returned functioncalls within the trace when this function was called
The value of the stack pointer register at the start of the functionrun
startindex
starttick
pc
A `syscallrun` represents a single run of a syscall
The program counter of the instruction immediately preceeding this syscallrun within the trace
The tick at which this syscall occurred
The number of the syscall
The return value of the syscall
A `buffer` represents a run of 9 or more bytes that were all read or all written in the course of a single `functionrun`
The index of the first access into the buffer
The hex-encoded bytes of the buffer
`1` if the buffer was written, `0` if the buffer was only read
The memory address of the first byte of the buffer
The number of bytes in the buffer
addr
startindex
The functions statically deduced by Ghidra
The name of the function
The namespace of the function (if defined)
The full path of the module from which the function comes
The address of the start of the function
The size of the function
addr
addr
namespace
name
The basic blocks
The full path of the module from which the block comes
The starting address of the basic block
The size of the basic block in number of bytes
addr
The modules loaded into memory during the trace collection
The starting address of the module
The size of the module in number of bytes
The name of the module
The path of the module relative to the sysroot
base
The value of the constant used
A hex-encoded string representing the constant used
The size in bytes of the constant value used
The mapping of integer pcode opcodes to string names
The string name of the opcode
The pcode integer value of the opcode
The mapping of addresses within the register address space to architectural register names
The string name of the register
The offset in the register address space of the register
`true` if this is a general-purpose register, `false` if not
The set of objects that come into and out of existence through the course of the trace
The string name of the object
The base address of this object in memory
The size of this object in memory
The tick on which this object comes into existence
The tick on which this object ceases its existence
The Ghidra UniversalID of the object's type
base
birth
death
Annotations for instructions that represent the creation, type conversion, or death of an object
The string name of the module in which the witness instruction is found
The offset within the object to which the witness instruction refers
The offset within the module in which the witness instruction is found
The type of witness--"BIRTH" (if witnessing the birth of an object), "DEATH" (if witnessing the death of an object), or "CHANGE" if witnessing the type conversion of an object
The Ghidra UniversalID of the type of object (if type == "BIRTH" or "CHANGE")
The feature of the instruction that bears witness to the event. Can be "REG_WRITE" (if it is the value written to a register by this instruction that is the address of the object being witnessed; which register specifically is described by regNum), "LOAD_VAL" (if it is the (assumed unique) value loaded from memory by this instruction that represents the witnessed object's address), "LOAD_ADDR" (if it is the (assumed unique) address being loaded from by this instruction that represents the witnessed object's address), "STORE_VAL" (if it is the (assumed unique) value stored into memory by this instruction that represents the witnessed object's address), "STORE_ADDR" (if it is the (assumed unique) address being stored to by this instruction that represents the witnessed object's address),
If feature == "REG_WRITE", the offset of the register (in Ghidra's register space) being written by the instruction whose written value represents the witnessed object's address
The calls to malloc along with their return values made during the trace
The callsite of the malloc
The address that is accessed
The size of the memory access
The tick at which the access occurred
The pc at which the access occurred
The value that was read or written during the access
`true` if the access is a write, `false` otherwise
The disassembly of the instruction that performed the access
index
addr
tick
pc
An `inputdep` edge from `x` to `y` with `pos` equal to `n` means that the output of operation `y` is the `n`th input to operation `x`.
1 if the analysis is undertain of this dependency; 0 otherwise
Which argument to the source operation the output of the destination operation is
An `addrdep` edge from `x` to `y` means that the output of operation `y` is used as the address for the memory access by the LOAD or STORE operation `x`.
1 if theour analysis is undertain of this dependency; 0 otherwise
A `cfdep` edge from `x` to `y` means that `y` is the most recent CBRANCH operation prior to the operation `x`
An edge from `x` to `y` means that the `instructionrun` `x` occurred during `functionrun` `y`
An edge from `x` to `y` means that the `functionrun` `x` contained the call which caused the `functionrun` `y` to run
An edge from `x` to `y` means that the `buffer` `x` was written or read during the `functionrun` `y`
An edge from `x` to `y` means that the return value of the `functionrun` `x` is generated by the output of the `operationrun` `y`
An edge from `x` to `y` with bank `b` and offset `f` means that when the `functionrun` `x` was called, the value in memory bank `b` at offset `f` was written by `operationrun` `y`
The bank of the value whose content is generated by the dst operation
If `bank` is the register bank, this is the offset within the register address space; if `bank` is the memory bank, then this is the offset from the current stack pointer as of the calling of the function
An edge from `x` to `y` with bank `b` and offset `f` means that when the `syscallrun` `x` was called, the value in memory bank `b` at offset `f` was written by `operationrun` `y`
The bank of the value whose content is generated by the dst operation. Will only be the register address space
The offset within the register address space
An edge from `x` to `y` means that during the execution of the `functionrun` `x`, the `syscallrun` `y` was triggered
An edge from `x` to `y` with `pos` n means that the operation `x` uses the constant `y` as its `n`th input
Which argument to the source operation the destination constant is
An edge from `x` to `y` means that the load/store operation `x` uses the constant `y` as its load/store address
An edge from `x` to `y` exists if `x` may (statically) call `y`
An edge from `x` to `y` exists if `x` may (statically) be a successor of `y`
An edge from `x` to `y` exists if `x` is a basic block within the body of the function `y`
An edge from `x` to `y` exists if `x` has `y` as a control depednence in the static control flow graph of the function to which they both belong