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
44 lines
2.0 KiB
TeX
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}
|
|
|
|
|