Content deleted Content added
Jerryobject (talk | contribs) m Per Wikipedia Style Manual: corrected punctuation of unprintworthy terms, heading capitalization; removed excess punctuation; defined initialism; changed instances of passive voice to active. |
Jerryobject (talk | contribs) m Disambiguated term "routine". Defined initialism "API". Changed instances of passive voice to active. |
||
Line 4:
| latest release date = {{release date|11|03|2010}}
| operating_system = [[Linux]], [[Windows]]
| platform = [[IA-32]], [[x86-64]]
| genre = [[Instrumentation (computer programming)|Instrumentation framework]], [[Profiling (computer programming)|Profiler]]
| license = [[Proprietary software|Proprietary]], free for non-commercial use
Line 19:
==Overview==
Pin performs instrumentation by taking control of the program just after it loads into memory. It then [[Just-in-time compilation|just-in-time recompiles]] (JIT) small sections of binary code just before they are run. New instructions, which perform the 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
Pin is a platform for creating analysis tools. A pin tool comprises instrumentation, analysis and callback [[
== Features ==
=== Instrumentation modes ===
Pin supports two modes of instrumentation called JIT mode and Probe mode. JIT mode supports all
=== Platform independence ===
Pin was designed for tool [[Cross-platform|portability]], and despite JIT compiling from one ISA to the same ISA (and not using a single [[intermediate representation]] for all code), most of its APIs are architecture and [[operating system]] independent. It was also designed to be portable itself, carefully isolating platform-specific code from generic code, allowing the fast adaptation of Pin to new platforms. Approximately half of the code is generic and the rest is either architecture or OS dependent.<ref>[http://www.cs.virginia.edu/papers/p190-luk.pdf Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation]</ref>
=== Optimizations ===
Pin uses many techniques to optimize instrumentation and analysis code, using techniques such as [[Inline function|inlining]], [[liveness analysis]] and smart [[register spilling]]. Pin performs these optimizations automatically whenever possible, without
===Ease of use===
Pin’s API and implementation are focused on making pin tools easy to write. Pin takes full responsibility for assuring that the instrumentation code from the pin tool does not affect the application state. Also, the API enables
==Tools==
Line 41:
* '''[http://software.intel.com/en-us/articles/intel-software-development-emulator/|Intel Software Development Emulator]''' is a pintool that enables the development of applications using instruction set extensions that are not currently implemented in hardware.
* '''CMP$IM''' is a cache profiler built using pin. <ref>[http://www.ece.umd.edu/~blj/papers/mobs2008.pdf CMP$im: A Pin-Based On-The-Fly Multi-Core Cache Simulator]</ref>
*'''PinPlay''' enables the capture and deterministic replay of the running of multithreaded programs under pin. Capturing the running of a program
* Pin itself comes with many example tools that make use of its
== See also ==
|