Pin is a tool for the instrumentation of programs. It supports the Linux*, OS X* and Windows* operating systems and executables for the IA-32, Intel(R) 64 and Intel(R) Many Integrated Core architectures.

Pin allows a tool to insert arbitrary code (written in C or C++) in arbitrary places in the executable. The code is added dynamically while the executable is running. This also makes it possible to attach Pin to an already running process.

Pin provides a rich API that abstracts away the underlying instruction set idiosyncracies and allows context information such as register contents to be passed to the injected code as parameters. Pin automatically saves and restores the registers that are overwritten by the injected code so the application continues to work. Limited access to symbol and debug information is available as well.

Pin includes the source code for a large number of example instrumentation tools like basic block profilers, cache simulators, instruction trace generators, etc. It is easy to derive new tools using the examples as a template.

Программирование — отстой:

Там хоть и про погромистов, но паста актуальна для всего IT в целом. Буду кидать эту ссылку всем, кто говорит, что "а, ну так у тебя же сидячая работа" и "чё там сложного? зверьдвд может накатить каждый".

Страница давно лежит в фоксовом скрапбуке, но только сейчас решил оставить на память тут.

[05:46]<slidercrank> den_po: мля. listing не умеет русские буквы в тексте програм.
[06:04]<slidercrank> уф. удалось победить)
[06:07]<slidercrank> без этого нифига не будет работать
\lstset{inputencoding=utf8, extendedchars=false}
\lstset{keepspaces = true}