Files
hustoj/web/cppreference-zh/chmhelp/cpp-language-asm.html
2025-08-01 12:57:54 +08:00

106 lines
8.5 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>&#27719;&#32534;&#22768;&#26126;</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_language_asm skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#27719;&#32534;&#22768;&#26126;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p><i>&#27719;&#32534;&#65288;asm&#65289;&#22768;&#26126;</i> &#32473;&#20104;&#22312; C++ &#31243;&#24207;&#20013;&#23884;&#20837;&#27719;&#32534;&#35821;&#35328;&#28304;&#20195;&#30721;&#30340;&#33021;&#21147;&#12290;&#27492;&#22768;&#26126;&#21463;&#26465;&#20214;&#24615;&#25903;&#25345;&#19988;&#30001;&#23454;&#29616;&#23450;&#20041;&#65292;&#24847;&#24605;&#26159;&#23427;&#21487;&#20197;&#19981;&#23384;&#22312;&#65292;&#32780;&#19988;&#21363;&#20351;&#23454;&#29616;&#26377;&#25152;&#25552;&#20379;&#65292;&#23427;&#20063;&#24182;&#19981;&#25317;&#26377;&#22266;&#23450;&#30340;&#21547;&#20041;&#12290;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>asm (</b></code> <span class="t-spar">&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</span> <code><b>)</b></code> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<table class="t-par-begin">
<tr class="t-par">
<td><span class="t-spar">&#23646;&#24615;</span></td>
<td>-</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span> &#20219;&#24847;&#25968;&#37327;&#30340;<a href="cpp-language-attributes.html">&#23646;&#24615;</a></td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</span></td>
<td>-</td>
<td>&#19968;&#20010;<a href="cpp-language-string_literal.html">&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</a></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p><span class="t-spar">&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</span> &#36890;&#24120;&#26159;&#20197;&#27719;&#32534;&#35821;&#35328;&#32534;&#20889;&#30340;&#30701;&#31243;&#24207;&#65292;&#35813;&#31243;&#24207;&#20250;&#22312;&#25191;&#34892;&#36825;&#26465;&#22768;&#26126;&#26102;&#25191;&#34892;&#12290;&#19981;&#21516;&#30340; C++ &#32534;&#35793;&#22120;&#30340;&#27719;&#32534;&#22768;&#26126;&#35268;&#21017;&#26377;&#24040;&#22823;&#24046;&#24322;&#65292;&#21644;&#19982;&#21608;&#22260;&#30340; C++ &#20195;&#30721;&#20043;&#38388;&#20132;&#20114;&#30340;&#32422;&#23450;&#20063;&#19981;&#21516;&#12290;</p>
<p>&#19982;&#20854;&#20182;<a href="cpp-language-declarations.html">&#22359;&#22768;&#26126;</a>&#19968;&#26679;&#65292;&#35813;&#22768;&#26126;&#21487;&#20986;&#29616;&#20110;&#22359;&#65288;&#20989;&#25968;&#20307;&#25110;&#20854;&#20182;&#22797;&#21512;&#35821;&#21477;&#65289;&#20869;&#65292;&#24182;&#19988;&#19982;&#25152;&#26377;&#20854;&#20182;&#22768;&#26126;&#19968;&#26679;&#65292;&#27492;&#22768;&#26126;&#20063;&#21487;&#20197;&#22312;&#22359;&#22806;&#20986;&#29616;&#12290;</p>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<div class="t-example">
<p>&#36825;&#37324;&#28436;&#31034; GCC &#25552;&#20379;&#30340;&#20004;&#31181;&#20869;&#32852;&#27719;&#32534;&#35821;&#27861;&#12290;&#27492;&#31243;&#24207;&#21482;&#22312; x86-64 &#19978;&#30340; Linux &#19979;&#27491;&#30830;&#24037;&#20316;&#12290;</p>
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;iostream&gt;</span>
<span class="kw4">extern</span> <span class="st0">&quot;C&quot;</span> <span class="kw4">int</span> func<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// func &#30340;&#23450;&#20041;&#20197;&#27719;&#32534;&#35821;&#35328;&#20070;&#20889;</span>
<span class="co1">// &#21407;&#22987;&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;&#21487;&#20197;&#24456;&#26377;&#29992;</span>
asm<span class="br0">(</span>R<span class="st0">&quot;(
.globl func
.type func, @function
func:
.cfi_startproc
movl $7, %eax
ret
.cfi_endproc
)&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">int</span> n <span class="sy1">=</span> func<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#25193;&#23637;&#20869;&#32852;&#27719;&#32534;</span>
asm <span class="br0">(</span><span class="st0">&quot;leal (%0,%0,4),%0&quot;</span>
<span class="sy4">:</span> <span class="st0">&quot;=r&quot;</span> <span class="br0">(</span>n<span class="br0">)</span>
<span class="sy4">:</span> <span class="st0">&quot;0&quot;</span> <span class="br0">(</span>n<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;7*5 = &quot;</span> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-endl.html"><span class="kw1791">std::<span class="me2">endl</span></span></a><span class="sy4">;</span> <span class="co1">// &#20914;&#21047;&#32531;&#20914;&#21306;&#26159;&#26377;&#24847;&#30340;</span>
<span class="co1">// &#26631;&#20934;&#20869;&#32852;&#27719;&#32534;</span>
asm <span class="br0">(</span><span class="st0">&quot;movq $60, %rax<span class="es1">\n</span><span class="es1">\t</span>&quot;</span> <span class="co1">// Linux &#19978;&#30340;&ldquo;&#36864;&#20986;&rdquo;&#30340;&#31995;&#32479;&#35843;&#29992;&#24207;&#21495;</span>
<span class="st0">&quot;movq $2, %rdi<span class="es1">\n</span><span class="es1">\t</span>&quot;</span> <span class="co1">// &#27492;&#31243;&#24207;&#36820;&#22238; 2</span>
<span class="st0">&quot;syscall&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">7*5 = 35</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5">&#22806;&#37096;&#38142;&#25509;</span></h3>
<ul>
<li><a rel="nofollow" class="external text" href="http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html">GCC &#20869;&#32852;&#27719;&#32534; HOWTO</a></li>
<li><a rel="nofollow" class="external text" href="http://pic.dhe.ibm.com/infocenter/comphelp/v121v141/topic/com.ibm.xlcpp121.aix.doc/language_ref/asm.html">IBM XL C/C++ &#20869;&#32852;&#27719;&#32534;</a></li>
<li><a rel="nofollow" class="external text" href="https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-inline-assembly">Intel C++ &#20869;&#32852;&#27719;&#32534;</a></li>
<li><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/en-us/library/4ks26t93(v=vs.120).aspx">Visual Studio 2013 &#20869;&#32852;&#27719;&#32534;&#22120;</a></li>
<li><a rel="nofollow" class="external text" href="https://blogs.oracle.com/x86be/entry/gcc_style_asm_inlining_support">Sun Studio 12 Asm &#35821;&#21477;</a></li>
<li><a rel="nofollow" class="external text" href="http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=4308e2f5bde02110e2f5bde02110275d6e10RCRD">&#22522;&#20110; Itanium &#30340; HP-UX &#30340;&#20869;&#32852;&#27719;&#32534;</a></li>
</ul>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>