Pin (computer program): Difference between revisions

Content deleted Content added
Yobot (talk | contribs)
m Removed invisible unicode characters + other fixes, replaced: → (2) using AWB (10903)
m grammar
Line 9:
| website = [http://www.intel.com/software/pintool www.intel.com/software/pintool]
}}
'''Pin''' is a platform for creating analysis tools. A pin tool comprises instrumentation, analysis and callback [[Subroutine|routines]]. Instrumentation routines are called when code that has not yet been recompiled is about to be run, and enable the insertion of analysis routines. Analysis routines are called when the code associated with itthem is ranrun. Callback routines are only called when specific conditions are met, or when a certain event has occurred. Pin provides an extensive [[application programming interface]] (API) for instrumentation at different abstraction levels, from one instruction to an entire binary module. It also supports callbacks for many events such as library loads, system calls, signals/exceptions and thread creation events.
 
Pin performs instrumentation by taking control of the program just after it loads into the memory. Then [[Just-in-time compilation|just-in-time recompiles]] (JIT) small sections of the binary code using pin just before it is ran. New instructions to perform analysis are added to the recompiled code. These new instructions come from the Pintool. A large array of optimization techniques are used to obtain the lowest possible running time and memory use overhead. As of June 2010, Pin's average base overhead is 30 percent (without running a pintool).<ref>[http://www.cs.virginia.edu/kim/docs/ieeeComputer10.pdf Analyzing Parallel Programs with Pin]</ref>