Rozvoj instrumentace programu při překladu - Ševčík, Václav (Vysoké učení technické v Brně. Fakulta informačních technologií, 2020)
Diplomová práce se věnuje vytvoření nástroje pro instrumentaci programu během překladu v LLVM překladači. Nástroj umožňuje instrumentovat přístupy do paměti a funkce. Instrumentace byla realizována pomocí přidání průchodu v optimalizační fázi překladače LLVM. Informace o proměnných jsou spravovány vytvořeným frameworkem, který se připojí k programu během sestavování. Doba běhu programu se zavedenou instrumentací zvýší časovou režii programu při vypnuté nepřímé adresaci průměrně o 14 % a při zapnuté nepřímé adresaci o 23 %. Hlavním přínosem práce je poskytnutí snadné instrumentace programu, která dokáže sledovat i operace nad lokálními proměnnými (nepřímou adresaci) a umožňuje instrumentovat i vícevláknové programy. Nástroj je také začleněn do sady nástrojů Testos, kde poskytuje automatickou instrumentaci pro nástroj Spectra.

The focus of this master's thesis is on the topic of instrumentation during the compilation process in the LLVM compiler. The tool enables to instrument memory accesses and functions. The instrumentation is realized through adding a novel pass to the LLVM's optimalization phase. Information about variables are managed by the created framework. The framework is linked with the program. The overhead of the instrumentation increases duration of the program by about 14 % in the case of switched off indirect addressing and 23 % in the case of switched on indirect addressing. The main benefit of the work is the possibility of easy instrumentation of the program which can even monitor operation of local variables through indirect addressing) and support multithread programs. The framework is part of Testos's tools where it provides automatic instrumentation in the Spectra tool.
Development of Instrumentation during Compilation
Keywords: LLVM; LLVM IR; instrumentace během překladu; Testos; LLVM průchod; instrumentační knihovna; instrumentační framework; instrumentace funkce; instrumentace přístupu do paměti; modul LLVM; vícevláknovost; nepřímá adresace; LLVM; LLVM IR; source code instrumentation; Testos; LLVM pass; instrumentation library; instrumentation framework; instrumentation function; instrumentation memory access; LLVM modul; multithreading; indirect addressing