Как построить график зависимости данных из кода сборки - PullRequest
1 голос
/ 30 сентября 2019

Я хотел бы знать, существуют ли какие-либо инструменты, которые могут построить график зависимости данных, начиная с фрагмента кода сборки?

Моя цель: начать с набора инструкций по сборке (получаемых в результатескомпилировал код C с использованием GCC / LLVM), построил график зависимости, который помог бы проанализировать, как каждая переменная вносит свой вклад в конечный результат.

Какие-либо предложения о том, что я мог бы узнать, чтобы достичь этого? Могут ли существующие компиляторы выводить что-то подобное или промежуточное представление, которое я могу преобразовать графически?

Например, если мы рассмотрим простое добавление D = (A + B)*C, такое как следующее:

load R1, Address_of_A
load R2, Address_of_B
load R3, Address_of_C
add  R4, R1, R2
mul  R5, R4, R3  
store R5, Address_of_D

Результатможет быть что-то вроде:

A ----
      (+)------
B ----         |--------
                       (*)----> D
C ----------------------

1 Ответ

0 голосов
/ 01 октября 2019

Для этого на Github существует множество инструментов. Я предлагаю взглянуть на миазм , код написан на Python и очень удобочитаем. Конструкция потока данных находится в data_flow.py .

...