Files
TheRock/rocm-systems/projects/rocprofiler-systems/external/dyninst/dataflowAPI/doc/Abstractions.tex
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

44 lines
2.0 KiB
TeX

\section{Abstractions}
\label{sec:abstractions}
DataflowAPI starts from the control flow graphs generated by ParseAPI and the instructions generated by InstructionAPI.
From these, it provides dataflow facts in a variety of forms. The key abstractions used by DataflowAPI are:
\begin{itemize}[leftmargin=0pt,label=$\circ$]
{\item {\scshape Abstract Location}
represents a register or memory location in the program.
DataflowAPI provides three types of abstract locations: register, stack, and
heap. A register abstract location represents a register, and the same register at two
different program locations is treated as the same abstract location.
A stack abstract location consists of the stack frame to which it belongs and
the offset within the stack frame.
A heap abstract location consists of the virtual address of the heap variable.
}
{\item {\scshape Abstract Region}
represents a set of abstract locations of the same type.
If an abstract region contains only a single abstract location, the
abstract location is precisely represented.
If an abstract region contains more than one abstract location, the region
contains the type of the locations. In the cases where it represents memory
(either heap or stack), an abstract region also contains
the memory address calculation that gives rise to this region.
}
{\item {\scshape Abstract Syntax Tree (AST)}
represents a symbolic expression of an instruction's semantics.
Specifically, an AST specifies how the value of an abstract location is modified by the
instruction.
}
{\item {\scshape Assignment}
represents a single data dependency of abstract regions in an instruction. For example, \texttt{xchg eax, ebx} creates two assignments: one from pre-instruction \texttt{eax} to post-instruction \texttt{ebx}, and one from pre-instruction \texttt{ebx} to post-instruction \texttt{eax}.
}
{\item {\scshape Stack Height}
represents the difference between a value in an abstract location and the stack pointer at a function's call site.
}
\end{itemize}