You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
8.0 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Pin: INS: Instruction Object</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Pin
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#groups">Modules</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">INS: Instruction Object</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__INS__INST__API"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__INS__INST__API.html">Instrumentation API</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__INS__BASIC__API__GEN__IA32"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__INS__BASIC__API__GEN__IA32.html">Generic inspection API</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__INS__BASIC__API__IA32"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__INS__BASIC__API__IA32.html">Inspection API for IA-32 and Intel(R) 64 instructions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__INS__MOD__API__GEN__IA32"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__INS__MOD__API__GEN__IA32.html">Generic modification API</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga8ea34b82ffe8007f69311e092816c47c"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__INS__BASIC__API.html#ga8ea34b82ffe8007f69311e092816c47c">LEVEL_CORE::INS_IsCacheLineFlush</a> (INS ins)</td></tr>
<tr class="separator:ga8ea34b82ffe8007f69311e092816c47c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32b488980f5ec67eb7b4e58eb4e5c527"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__INS__BASIC__API.html#ga32b488980f5ec67eb7b4e58eb4e5c527">LEVEL_PINCLIENT::INS_IsAddedForFunctionReplacement</a> (INS ins)</td></tr>
<tr class="separator:ga32b488980f5ec67eb7b4e58eb4e5c527"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>An INS represents an instruction. Can only be accessed at instrumentation time.</p>
<p>Iteration idioms:</p>
<div class="fragment"><div class="line"><span class="comment">// Forward pass over all instructions in bbl</span></div><div class="line"><span class="keywordflow">for</span>( INS ins= <a class="code" href="group__BBL__BASIC__API.html#ga7618bc7c80a25024227d3a24d59b936b">BBL_InsHead</a>(bbl); <a class="code" href="group__INS__BASIC__API__GEN__IA32.html#ga3a8b61fffa9ae4ad9f899b21ce37397c">INS_Valid</a>(ins); ins = <a class="code" href="group__INS__BASIC__API__GEN__IA32.html#ga227ce58a739b1573125c11071ecb48de">INS_Next</a>(ins) )</div><div class="line"></div><div class="line"><span class="comment">// Forward pass over all instructions in routine</span></div><div class="line"><span class="keywordflow">for</span>( INS ins= <a class="code" href="group__RTN__BASIC__API.html#gab1bd91206939b88057664c46ef8eac86">RTN_InsHead</a>(rtn); <a class="code" href="group__INS__BASIC__API__GEN__IA32.html#ga3a8b61fffa9ae4ad9f899b21ce37397c">INS_Valid</a>(ins); ins = <a class="code" href="group__INS__BASIC__API__GEN__IA32.html#ga227ce58a739b1573125c11071ecb48de">INS_Next</a>(ins) )</div></div><!-- fragment --> <h2 class="groupheader">Function Documentation</h2>
<a id="ga32b488980f5ec67eb7b4e58eb4e5c527"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga32b488980f5ec67eb7b4e58eb4e5c527">&#9670;&nbsp;</a></span>INS_IsAddedForFunctionReplacement()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL LEVEL_PINCLIENT::INS_IsAddedForFunctionReplacement </td>
<td>(</td>
<td class="paramtype">INS&#160;</td>
<td class="paramname"><em>ins</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return TRUE if ins is not an original instruction in the application, but is an instruction added by Pin for doing function replacement. Pin allows you to even instrument these non-original instructions in JIT mode.</p>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga8ea34b82ffe8007f69311e092816c47c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8ea34b82ffe8007f69311e092816c47c">&#9670;&nbsp;</a></span>INS_IsCacheLineFlush()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL LEVEL_CORE::INS_IsCacheLineFlush </td>
<td>(</td>
<td class="paramtype">INS&#160;</td>
<td class="paramname"><em>ins</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>TRUE if instruction causes cache line flush </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>