<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="/assets/rss-20b3285f.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>标签: gcc - ouuan's blog</title>
        <link>https://ouuan.moe/tag/gcc</link>
        <description>标签为 gcc 的文章 - ouuan 的博客</description>
        <lastBuildDate>Wed, 19 Oct 2022 16:42:57 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>Copyright © 2022 - 2026 ouuan
Licensed under CC BY-SA 4.0</copyright>
        <atom:link href="https://ouuan.moe/tag/gcc/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[探究 gcc 浮点数精度转换所使用的指令 —— use_vector_fp_converts 优化]]></title>
            <link>https://ouuan.moe/post/2022/10/gcc-use_vector_fp_converts</link>
            <guid>https://ouuan.moe/post/2022/10/gcc-use_vector_fp_converts</guid>
            <pubDate>Wed, 19 Oct 2022 16:42:57 GMT</pubDate>
            <description><![CDATA[<p>在学习 <a href="/post/2022/09/csapp-3#%E6%B5%AE%E7%82%B9%E6%95%B0%E7%B2%BE%E5%BA%A6%E8%BD%AC%E6%8D%A2">浮点数精度转换指令</a> 时<span class="mojikumi-line-end">，</span>CS:APP 里提到 gcc 并不使用 <code>vcvtss2sd</code>/<code>vcvtsd2ss</code><span class="mojikumi-line-end">，</span>而是使用 <code>vunpcklps</code> &#x26; <code>vcvtps2pd</code> / <code>vmovddup</code> &#x26; <code>vcvtpd2psx</code><span class="mojikumi-line-end">，</span>但是我使用 gcc 12.2.0 编译得到的结果就是 <code>vcvtss2sd</code>/<code>vcvtsd2ss</code><span class="mojikumi-line-end">。</span>对此<span class="mojikumi-line-end">，</span>CS:APP 没有深究<span class="mojikumi-line-end">：</span></p>
<blockquote>
<p>It is unclear why GCC generates this code. There is neither benefit nor need to have the value duplicated within the XMM register.</p>
</blockquote>
<p>但是 CS:APP 选择放弃反而会激发读者的斗志啊<span class="mojikumi-line-start">（</span></p>
<p>虽然但是<span class="mojikumi-line-end">，</span>我确实没想到这玩意会让我断断续续搞了三天<span class="mojikumi-line-end">，</span>ddl 又要寄了 🌚</p>
]]></description>
            <content:encoded><![CDATA[<p>在学习 <a href="/post/2022/09/csapp-3#%E6%B5%AE%E7%82%B9%E6%95%B0%E7%B2%BE%E5%BA%A6%E8%BD%AC%E6%8D%A2">浮点数精度转换指令</a> 时<span class="mojikumi-line-end">，</span>CS:APP 里提到 gcc 并不使用 <code>vcvtss2sd</code>/<code>vcvtsd2ss</code><span class="mojikumi-line-end">，</span>而是使用 <code>vunpcklps</code> &#x26; <code>vcvtps2pd</code> / <code>vmovddup</code> &#x26; <code>vcvtpd2psx</code><span class="mojikumi-line-end">，</span>但是我使用 gcc 12.2.0 编译得到的结果就是 <code>vcvtss2sd</code>/<code>vcvtsd2ss</code><span class="mojikumi-line-end">。</span>对此<span class="mojikumi-line-end">，</span>CS:APP 没有深究<span class="mojikumi-line-end">：</span></p>
<blockquote>
<p>It is unclear why GCC generates this code. There is neither benefit nor need to have the value duplicated within the XMM register.</p>
</blockquote>
<p>但是 CS:APP 选择放弃反而会激发读者的斗志啊<span class="mojikumi-line-start">（</span></p>
<p>虽然但是<span class="mojikumi-line-end">，</span>我确实没想到这玩意会让我断断续续搞了三天<span class="mojikumi-line-end">，</span>ddl 又要寄了 🌚</p>

<h2 id="问题描述" class="heading"><a href="#问题描述" class="heading-anchor" aria-label="章节： 问题描述" tabindex="-1"></a><span>问题描述</span></h2>
<p>这一问题可以由下面的代码所展示<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="C 代码块" data-v-c675dba6>C</h3><ile-root id="ile-1"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-1--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">double</span><span style="color: #403F53"> </span><span style="color: #4876D6">f2d</span><span style="color: #403F53">(</span><span style="color: #994CC3">float</span><span style="color: #403F53"> x)</span></span>
<span><span style="color: #403F53">{</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">return</span><span style="color: #403F53"> x;</span></span>
<span><span style="color: #403F53">}</span></span>
<span></span>
<span><span style="color: #994CC3">float</span><span style="color: #403F53"> </span><span style="color: #4876D6">d2f</span><span style="color: #403F53">(</span><span style="color: #994CC3">double</span><span style="color: #403F53"> x)</span></span>
<span><span style="color: #403F53">{</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">return</span><span style="color: #403F53"> x;</span></span>
<span><span style="color: #403F53">}</span></span>
<span></span>
<span><span style="color: #994CC3">double</span><span style="color: #403F53"> </span><span style="color: #4876D6">fp2d</span><span style="color: #403F53">(</span><span style="color: #994CC3">float</span><span style="color: #403F53"> </span><span style="color: #0C969B">*</span><span style="color: #403F53">x)</span></span>
<span><span style="color: #403F53">{</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">return</span><span style="color: #403F53"> </span><span style="color: #0C969B">*</span><span style="color: #403F53">x;</span></span>
<span><span style="color: #403F53">}</span></span>
<span></span>
<span><span style="color: #994CC3">float</span><span style="color: #403F53"> </span><span style="color: #4876D6">dp2f</span><span style="color: #403F53">(</span><span style="color: #994CC3">double</span><span style="color: #403F53"> </span><span style="color: #0C969B">*</span><span style="color: #403F53">x)</span></span>
<span><span style="color: #403F53">{</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">return</span><span style="color: #403F53"> </span><span style="color: #0C969B">*</span><span style="color: #403F53">x;</span></span>
<span><span style="color: #403F53">}</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">double</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">f2d</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">float</span><span style="color: #D6DEEB"> </span><span style="color: #D7DBE0">x</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">{</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> x;</span></span>
<span><span style="color: #D6DEEB">}</span></span>
<span></span>
<span><span style="color: #C792EA">float</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">d2f</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">double</span><span style="color: #D6DEEB"> </span><span style="color: #D7DBE0">x</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">{</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> x;</span></span>
<span><span style="color: #D6DEEB">}</span></span>
<span></span>
<span><span style="color: #C792EA">double</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">fp2d</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">float</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">*</span><span style="color: #D7DBE0">x</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">{</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">*</span><span style="color: #D6DEEB">x;</span></span>
<span><span style="color: #D6DEEB">}</span></span>
<span></span>
<span><span style="color: #C792EA">float</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">dp2f</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">double</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">*</span><span style="color: #D7DBE0">x</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">{</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">*</span><span style="color: #D6DEEB">x;</span></span>
<span><span style="color: #D6DEEB">}</span></span></code></pre></div></section>
<p>它编译成汇编的结果有如下几种<span class="mojikumi-line-end">：</span></p>
<a id="编译结果" name="编译结果" aria-hidden="true"></a>
<aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h3 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>编译结果</span></h3><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><p>汇编中不重要的部分已省去<span class="mojikumi-line-end">。</span></p><p>A:</p><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h4><ile-root id="ile-2"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-2--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">f2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtss2sd</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">d2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtsd2ss</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">fp2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">pxor</span><span style="color: #403F53">        %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtss2sd</span><span style="color: #403F53">    (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">dp2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">pxor</span><span style="color: #403F53">        %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtsd2ss</span><span style="color: #403F53">    (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #82AAFF">f2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtss2sd</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">d2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtsd2ss</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">fp2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">pxor</span><span style="color: #D6DEEB">        %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtss2sd</span><span style="color: #D6DEEB">    (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">dp2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">pxor</span><span style="color: #D6DEEB">        %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtsd2ss</span><span style="color: #D6DEEB">    (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span></code></pre></div></section><p>B<span class="mojikumi-line-end">：</span></p><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h4><ile-root id="ile-3"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-3--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">f2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">unpcklps</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtps2pd</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">d2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">unpcklpd</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtpd2ps</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">fp2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">movss</span><span style="color: #403F53">       (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtps2pd</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">dp2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">movq</span><span style="color: #403F53">        (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">cvtpd2ps</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #82AAFF">f2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">unpcklps</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtps2pd</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">d2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">unpcklpd</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtpd2ps</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">fp2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">       (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtps2pd</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">dp2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">        (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">cvtpd2ps</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span></code></pre></div></section><p>A with AVX2<span class="mojikumi-line-end">：</span></p><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h4><ile-root id="ile-4"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-4--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">f2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vcvtss2sd</span><span style="color: #403F53">   %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">d2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vcvtsd2ss</span><span style="color: #403F53">   %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">fp2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vxorps</span><span style="color: #403F53">      %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vcvtss2sd</span><span style="color: #403F53">   (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">dp2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vxorps</span><span style="color: #403F53">      %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vcvtsd2ss</span><span style="color: #403F53">   (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #82AAFF">f2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vcvtss2sd</span><span style="color: #D6DEEB">   %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">d2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vcvtsd2ss</span><span style="color: #D6DEEB">   %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">fp2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vxorps</span><span style="color: #D6DEEB">      %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vcvtss2sd</span><span style="color: #D6DEEB">   (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">dp2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vxorps</span><span style="color: #D6DEEB">      %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vcvtsd2ss</span><span style="color: #D6DEEB">   (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span></code></pre></div></section><p>B with AVX2<span class="mojikumi-line-end">：</span></p><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h4><ile-root id="ile-5"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-5--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">f2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vunpcklps</span><span style="color: #403F53">   %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vcvtps2pd</span><span style="color: #403F53">   %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">d2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vmovddup</span><span style="color: #403F53">    %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    vcvtpd2psx  %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">fp2d:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">      (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vcvtps2pd</span><span style="color: #403F53">   %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #4876D6">dp2f:</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">vmovq</span><span style="color: #403F53">       (%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    vcvtpd2psx  %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">    </span><span style="color: #0C969B">ret</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #82AAFF">f2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vunpcklps</span><span style="color: #D6DEEB">   %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vcvtps2pd</span><span style="color: #D6DEEB">   %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">d2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vmovddup</span><span style="color: #D6DEEB">    %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    vcvtpd2psx  %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">fp2d:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">      (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vcvtps2pd</span><span style="color: #D6DEEB">   %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #82AAFF">dp2f:</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">vmovq</span><span style="color: #D6DEEB">       (%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    vcvtpd2psx  %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #7FDBCA">ret</span></span></code></pre></div></section></div></details></aside>
<div class="overflow-auto my-6"><table>
<thead>
<tr>
<th align="center">函数</th>
<th align="center">A</th>
<th align="center">B</th>
<th align="center">A with AVX2</th>
<th align="center">B with AVX2</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">f2d</td>
<td align="center"><code>cvtss2sd</code></td>
<td align="center"><code>unpcklps</code> &#x26; <code>cvtps2pd</code></td>
<td align="center"><code>vcvtss2sd</code></td>
<td align="center"><code>vunpcklps</code> &#x26; <code>vcvtps2pd</code></td>
</tr>
<tr>
<td align="center">d2f</td>
<td align="center"><code>cvtsd2ss</code></td>
<td align="center"><code>unpcklpd</code> &#x26; <code>cvtpd2ps</code></td>
<td align="center"><code>vcvtsd2ss</code></td>
<td align="center"><code>vmovddup</code> &#x26; <code>vcvtpd2psx</code></td>
</tr>
<tr>
<td align="center">fp2d</td>
<td align="center"><code>pxor</code> &#x26; <code>cvtss2sd</code></td>
<td align="center"><code>movss</code> &#x26; <code>cvtps2pd</code></td>
<td align="center"><code>vxorps</code> &#x26; <code>vcvtss2sd</code></td>
<td align="center"><code>vmovss</code> &#x26; <code>vcvtps2pd</code></td>
</tr>
<tr>
<td align="center">dp2f</td>
<td align="center"><code>pxor</code> &#x26; <code>cvtsd2ss</code></td>
<td align="center"><code>movq</code> &#x26; <code>cvtpd2ps</code></td>
<td align="center"><code>vxorps</code> &#x26; <code>vcvtsd2ss</code></td>
<td align="center"><code>vmovq</code> &#x26; <code>vcvtpd2psx</code></td>
</tr>
</tbody>
</table></div>
<p>问题在于<span class="mojikumi-line-end">，</span>gcc 为什么/在什么情况下会生成如 B 所示的指令<span class="mojikumi-line-end">。</span>其中<span class="mojikumi-line-end">，</span>使用两条理解起来都不太容易的指令<span class="mojikumi-line-start">（</span><code>unpcklps</code><span class="mojikumi-line-end">、</span><code>cvtps2pd</code><span class="mojikumi-line-end">）</span>来代替指令集中自带的 <code>cvtss2sd</code>/<code>cvtsd2ss</code> 最令人费解<span class="mojikumi-line-end">。</span>而 source 为指针的另外两个函数是受 <a href="https://stackoverflow.com/questions/16597587/why-dont-gcc-and-clang-use-cvtss2sd-memory">performance - Why don't GCC and Clang use cvtss2sd [memory]? - Stack Overflow</a> 启发<span class="mojikumi-line-end">。</span></p>
<p>我先尝试了各种关键词用搜索引擎进行搜索<span class="mojikumi-line-end">，</span>均未找到答案<span class="mojikumi-line-end">。</span></p>
<h2 id="gcc-版本的定位" class="heading"><a href="#gcc-版本的定位" class="heading-anchor" aria-label="章节： gcc 版本的定位" tabindex="-1"></a><span>gcc 版本的定位</span></h2>
<p>使用 <a href="https://gcc.godbolt.org/">Compiler Explorer</a> 进行尝试<span class="mojikumi-line-end">，</span>很快就能确认<span class="mojikumi-line-end">，</span>是在 gcc 4.8.5 / 4.9.0 之间行为出现了变化<span class="mojikumi-line-end">。</span></p>
<p>于是<span class="mojikumi-line-end">，</span>我先看了 <a href="https://gcc.gnu.org/gcc-4.9/changes.html">gcc 4.9 changes</a><span class="mojikumi-line-end">，</span>又在 commit log 里大力搜索 <span class="mojikumi">“</span><code>cvtss2sd</code><span class="mojikumi">”</span> <span class="mojikumi">“</span><code>cvtsd2ss</code><span class="mojikumi">”</span> <span class="mojikumi">“</span><code>unpcklp</code><span class="mojikumi">”</span> <span class="mojikumi">“</span>floating point<span class="mojikumi">”</span> <span class="mojikumi">“</span>convert<span class="mojikumi-line-end">”</span>……都没找到相关内容<span class="mojikumi-line-end">。</span></p>
<h2 id="具体-commit-的定位：git-bisect-编译-gcc" class="heading"><a href="#具体-commit-的定位：git-bisect-编译-gcc" class="heading-anchor" aria-label="章节： 具体 commit 的定位：git bisect / 编译 gcc" tabindex="-1"></a><span>具体 commit 的定位<span class="mojikumi-line-end">：</span>git bisect / 编译 gcc</span></h2>
<p>在各种搜索都失败后<span class="mojikumi-line-end">，</span>我决定使用 <code>git bisect</code> 找到行为出现变化的 commit<span class="mojikumi-line-end">。</span></p>
<p>要 bisect<span class="mojikumi-line-end">，</span>就得编译 gcc 4.8.5 ~ 4.9.0<span class="mojikumi-line-end">，</span>步骤大致如下<span class="mojikumi-line-end">：</span></p>
<ol>
<li>将 gcc 代码 clone 下来: <code>git<wbr> <wbr>clone<wbr> <wbr>https<wbr>://<wbr>github<wbr>.<wbr>com<wbr>/<wbr>gcc<wbr>-<wbr>mirror<wbr>/<wbr>gcc<wbr> --<wbr>branch<wbr> <wbr>releases<wbr>/<wbr>gcc<wbr>-<wbr>4<wbr>.<wbr>9<wbr> --<wbr>depth<wbr> <wbr>50000</code></li>
<li>创建 <code>build</code> 目录</li>
<li>在 <code>build</code> 目录下运行 <code>gcc</code> 仓库根目录的 <code>configure</code> 脚本</li>
<li>在 <code>build</code> 目录下运行 <code>make</code></li>
</ol>
<p>其中<span class="mojikumi-line-end">，</span><code>configure</code> 的配置可以参考 <a href="https://gcc.gnu.org/install/configure.html">Installing GCC: Configuration - GNU Project</a><span class="mojikumi-line-end">，</span>但我只是 bisect 一下<span class="mojikumi-line-end">，</span>就没仔细研究<span class="mojikumi-line-end">。</span></p>
<p>过程中走的弯路就不一一细说了<span class="mojikumi-line-end">，</span>只说一下最终的解决方案中遇到的几个主要问题<span class="mojikumi-line-end">。</span></p>
<p>最终的编译命令为:</p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h3><ile-root id="ile-6"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-6--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">CC</span><span style="color: #994CC3">=</span><span style="color: #4876D6">gcc-4.8</span></span>
<span><span style="color: #4876D6">CXX</span><span style="color: #994CC3">=</span><span style="color: #4876D6">g++-4.8</span></span>
<span><span style="color: #4876D6">make</span><span style="color: #403F53"> </span><span style="color: #4876D6">distclean</span></span>
<span><span style="color: #4876D6">.</span><span style="color: #403F53">./gcc/configure </span><span style="color: #4876D6">--enable-languages=c</span><span style="color: #403F53"> </span><span style="color: #4876D6">--disable-multilib</span><span style="color: #403F53"> </span><span style="color: #4876D6">--disable-libsanitizer</span></span>
<span><span style="color: #4876D6">make</span><span style="color: #403F53"> </span><span style="color: #4876D6">-j$(nproc)</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C5E478">CC</span><span style="color: #C792EA">=</span><span style="color: #ECC48D">gcc-4.8</span></span>
<span><span style="color: #C5E478">CXX</span><span style="color: #C792EA">=</span><span style="color: #ECC48D">g++-4.8</span></span>
<span><span style="color: #82AAFF">make</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">distclean</span></span>
<span><span style="color: #C5E478">.</span><span style="color: #D6DEEB">./gcc/configure </span><span style="color: #82AAFF">--enable-languages=c</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">--disable-multilib</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">--disable-libsanitizer</span></span>
<span><span style="color: #82AAFF">make</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-j</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">nproc</span><span style="color: #ECC48D">)</span></span></code></pre></div></section>
<h3 id="语言标准问题" class="heading"><a href="#语言标准问题" class="heading-anchor" aria-label="章节： 语言标准问题" tabindex="-1"></a><span>语言标准问题</span></h3>
<p>因为编译的是多年前的 gcc 4.8~4.9<span class="mojikumi-line-end">，</span>用现在的编译器会遇到一些语言标准不同的问题<span class="mojikumi-line-end">。</span>修改编译选项大概能解决问题<span class="mojikumi-line-end">，</span>但改起来麻烦<span class="mojikumi-line-end">，</span>也不见得能解决所有问题<span class="mojikumi-line-end">，</span>不如直接用旧版 gcc 来编译<span class="mojikumi-line-end">。</span></p>
<p><s>但是现在目标就是编译旧版 gcc<span class="mojikumi-line-end">，</span>你哪来的旧版 gcc 用来编译？</s></p>
<p>用旧版 gcc 解决编译旧版 gcc 遇到的问题看起来很矛盾<span class="mojikumi-line-end">，</span>但我们要解决的是编译两个版本之间的一堆 commit<span class="mojikumi-line-end">，</span>而获得一个用来编译的旧版 gcc 只需要一个 gcc release 的可执行文件<span class="mojikumi-line-end">。</span>这个用来编译的旧版 gcc 可以用各种方式下载一个<span class="mojikumi-line-end">，</span>而我用的是 Arch Linux<span class="mojikumi-line-end">，</span>就装了 <a href="https://aur.archlinux.org/packages/gcc48">AUR 里的 gcc48</a><span class="mojikumi-line-end">。</span></p>
<p>获得了一个旧版 gcc 后<span class="mojikumi-line-end">，</span>运行 <code>configure</code> 时修改环境变量 <code>CC</code> 和 <code>CXX</code> 即可使用<span class="mojikumi-line-end">。</span></p>
<p>P.S. 我本来想用 AUR 的 PKGBUILD 来编译<span class="mojikumi-line-end">，</span>但能编译 release 不代表能编译各个 commit<span class="mojikumi-line-end">，</span>然后踩各种坑踩了半天..</p>
<h3 id="struct-ucontext" class="heading"><a href="#struct-ucontext" class="heading-anchor" aria-label="章节： struct ucontext" tabindex="-1"></a><span>struct ucontext</span></h3>
<p>还会遇到一个编译错误: <code>md<wbr>-<wbr>unwind<wbr>-<wbr>support<wbr>.<wbr>h<wbr>:<wbr>65<wbr>:<wbr>47<wbr>: <wbr>error<wbr>: <wbr>dereferencing<wbr> <wbr>pointer<wbr> <wbr>to<wbr> <wbr>incomplete<wbr> <wbr>type<wbr> '<wbr>struct<wbr> <wbr>ucontext<wbr>'</code></p>
<p>将相应代码中的 <code>ucontext</code> 修改为 <code>ucontext_t</code> 即可<span class="mojikumi-line-end">。</span></p>
<p>reference: <a href="https://stackoverflow.com/questions/46999900/how-to-compile-gcc-6-4-0-with-gcc-7-2-in-archlinux">How to compile gcc 6.4.0 with gcc 7.2 in Archlinux - Stack Overflow</a></p>
<h3 id="libsanitizer" class="heading"><a href="#libsanitizer" class="heading-anchor" aria-label="章节： libsanitizer" tabindex="-1"></a><span>libsanitizer</span></h3>
<p>还会遇到一些编译错误<span class="mojikumi-line-end">，</span>在搜索其中一个的解决方案时<span class="mojikumi-line-end">，</span>我找到了 <a href="https://blog.csdn.net/tuibianhuaisheng/article/details/115399019">一次令人吐血的 ubuntu 源码安装 gcc-5.4.0 经历_亿零贰肆的博客-CSDN 博客_ubuntu 安装 gcc5.4.0</a><span class="mojikumi-line-end">。</span></p>
<p>这篇博客也提到了上面说的 <code>struct ucontext</code> 的问题<span class="mojikumi-line-end">，</span>而仔细一看就会发现<span class="mojikumi-line-end">，</span>剩下其他问题全都是 <code>libsanitizer</code> 里的<span class="mojikumi-line-end">，</span>而我研究这个问题不需要 <code>libsanitizer</code><span class="mojikumi-line-end">，</span>直接 <code>--<wbr>disable<wbr>-<wbr>libsanitizer</code> 就能解决这一堆编译错误还能缩短编译用时<span class="mojikumi-line-end">。</span></p>
<h3 id="make-distclean" class="heading"><a href="#make-distclean" class="heading-anchor" aria-label="章节： make distclean" tabindex="-1"></a><span>make distclean</span></h3>
<p>修改各种选项或者更换 commit 后<span class="mojikumi-line-end">，</span>如果直接 <code>make</code> 容易出问题<span class="mojikumi-line-end">，</span>可以先 <code>make distclean</code> 来重置<span class="mojikumi-line-end">。</span></p>
<h3 id="git-bisect" class="heading"><a href="#git-bisect" class="heading-anchor" aria-label="章节： git bisect" tabindex="-1"></a><span>git bisect</span></h3>
<p>在处理完上面几个问题之后<span class="mojikumi-line-end">，</span>编译就很顺利了<span class="mojikumi-line-end">。</span>在我 8C16T 的 AMD Ryzen 7 4800H 上<span class="mojikumi-line-end">，</span>编译一次大约需要 9min<span class="mojikumi-line-end">。</span></p>
<p>需要注意的是<span class="mojikumi-line-end">，</span>因为原问题可以看成是在更老的版本出现<span class="mojikumi-line-end">，</span>即新版本 good 老版本 bad<span class="mojikumi-line-end">，</span>但 <code>git bisect</code> 默认是老版本 good 新版本 bad<span class="mojikumi-line-end">，</span>这里容易搞反<span class="mojikumi-line-end">，</span>需要注意<span class="mojikumi">。</span><wbr><span class="mojikumi-line-start">（</span><code>git bisect</code> 可以把 good/bad 改成 old/new<span class="mojikumi-line-end">，</span>但我懒得<span class="mojikumi-line-start">（</span>研究怎么<span class="mojikumi-line-end">）</span>改了<span class="mojikumi">。</span><span class="mojikumi-line-end">）</span></p>
<p>bisect 找到的 commit 是 <a href="https://github.com/gcc-mirror/gcc/commit/915e8e6eec05fb595d445cb738e4875d607ce126">915e8e6e</a><span class="mojikumi-line-end">。</span></p>
<p>从这个 commit 的内容可以得知<span class="mojikumi-line-end">，</span>那些看起来有些奇怪的编译结果是一个叫做 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code> 的优化的结果<span class="mojikumi-line-end">。</span>这个 commit 使得这个优化只对 amdfam10 架构生效<span class="mojikumi-line-end">，</span>在新版 gcc 中仍可使用 <code>-<wbr>mtune<wbr>=<wbr>amdfam10</code> 选项观察到这一行为<span class="mojikumi-line-start">（</span>也可以使用 <code>-<wbr>mtune<wbr>-<wbr>ctrl<wbr>=<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code> 来启用这个优化<span class="mojikumi">）</span><span class="mojikumi-line-end">。</span>代码中对这一优化给出的理由是 <span class="mojikumi">“</span>avoids partial write to the destination<span class="mojikumi">”</span><span class="mojikumi-line-end">，</span>也就是说 <code>cvtss2sd</code>/<code>cvtsd2ss</code> 只修改目标寄存器的低位<span class="mojikumi-line-end">，</span>可能导致效率低<span class="mojikumi-line-end">。</span></p>
<h2 id="优化最终被关闭的原因" class="heading"><a href="#优化最终被关闭的原因" class="heading-anchor" aria-label="章节： 优化最终被关闭的原因" tabindex="-1"></a><span>优化最终被关闭的原因</span></h2>
<p>锁定了问题出现的 commit<span class="mojikumi-line-end">，</span>接下来就是搜索这个 commit 修改的原因了<span class="mojikumi-line-end">。</span></p>
<p><a href="https://www.mail-archive.com/search?l=gcc-patches%40gcc.gnu.org&#x26;q=use_vector_fp_converts">在 <code>gcc<wbr>-<wbr>patches</code> 里搜索 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code></a><span class="mojikumi-line-end">，</span>然后再顺着邮件内容找<span class="mojikumi-line-end">，</span>就可以找到相关邮件<span class="mojikumi-line-end">：</span></p>
<ul>
<li><a href="https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg59433.html">[Google] X86_TUNE_USE_VECTOR_CONVERTS adjustment</a></li>
<li><a href="https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg61372.html">[PATCH] disable use_vector_fp_converts for m_CORE_ALL</a> (<a href="https://github.com/gcc-mirror/gcc/commit/157ca3e989605194001568cc1864603b32fbd025">157ca3e9</a>)</li>
<li><a href="https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg62058.html">Revisit Core tunning flags</a></li>
<li><a href="https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg46926.html">Re: [PATCH i386]: Enable push/pop in pro/epilogue for modern CPUs</a></li>
</ul>
<p>令我自闭的是..直接搜索 <code>cvtss2sd</code>/<code>cvtsd2ss</code> 就能搜到这些邮件 😵 为什么 bisect 出来才想着在邮件列表里搜呢...<span class="mojikumi-line-start">（</span>低情商<span class="mojikumi-line-end">：</span>wssb<span class="mojikumi-line-end">；</span>高情商<span class="mojikumi-line-end">：</span>还是 mailing list 使用经验不足 😢<span class="mojikumi-line-end">）</span></p>
<p>总结一下这些邮件的内容<span class="mojikumi-line-end">，</span>就是<span class="mojikumi-line-end">：</span></p>
<ol>
<li>在一些 Intel CPU 上<span class="mojikumi-line-end">，</span>某些 test case 上启用 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code> 更快<span class="mojikumi-line-end">，</span>另一些 test case 上不启用更快<span class="mojikumi-line-end">。</span></li>
<li>在启用 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code> 更快的 test case 上<span class="mojikumi-line-end">，</span>可以通过在 <code>cvtss2sd</code>/<code>cvtsd2ss</code> 之前将 XMM 寄存器清空<span class="mojikumi-line-start">（</span><code>pxor %xmm0, %xmm0</code><span class="mojikumi-line-end">）</span>以避免只更新低位带来的性能损失<span class="mojikumi-line-end">，</span>从而达到和启用 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code> 差不多的性能<span class="mojikumi-line-end">。</span>所以 <a href="https://github.com/gcc-mirror/gcc/commit/157ca3e989605194001568cc1864603b32fbd025">157ca3e9</a> 就对 <code>m_CORE_ALL</code> 关闭了这个优化并且在需要时先将 XMM 寄存器清空<span class="mojikumi-line-end">。</span></li>
<li>在 <a href="https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg62712.html">Re: [PATCH] disable use_vector_fp_converts for m_CORE_ALL</a> 中<span class="mojikumi-line-end">，</span>Honza 表示可以先把上面那个 patch commit 了<span class="mojikumi-line-end">，</span>他测试一下再决定是否对 <code>m_GENERIC</code> 也关闭这个优化<span class="mojikumi-line-end">，</span>所以 157ca3e9<span class="mojikumi-line-start">（</span>对 <code>m_CORE_ALL</code> 关闭优化并在需要时清空 XMM<span class="mojikumi-line-end">）</span>和 915e8e6e<span class="mojikumi-line-start">（</span>对 <code>m_GENERIC</code> 关闭优化<span class="mojikumi-line-end">）</span>分成了两个 commit<span class="mojikumi-line-end">。</span></li>
</ol>
<h2 id="优化最初被添加的原因" class="heading"><a href="#优化最初被添加的原因" class="heading-anchor" aria-label="章节： 优化最初被添加的原因" tabindex="-1"></a><span>优化最初被添加的原因</span></h2>
<p>继续追根溯源下去<span class="mojikumi-line-end">，</span>通过 <code>git blame</code> 来找到一开始添加这个优化的原因<span class="mojikumi-line-end">。</span></p>
<p>首先找到 <a href="https://github.com/gcc-mirror/gcc/commit/54723b46231868447f68ed5322d916bd05bffae3">54723b46</a><span class="mojikumi-line-end">，</span>这个 commit 将 <code>TARGET_<wbr>USE_<wbr>VECTOR_<wbr>FP_<wbr>CONVERTS</code> 从 <code>TARGET_<wbr>USE_<wbr>VECTOR_<wbr>CONVERTS</code> 中抽离出来成为单独的优化开关<span class="mojikumi-line-end">。</span></p>
<p>然后找到 <a href="https://github.com/gcc-mirror/gcc/commit/4845dbb50ed31ad03c579364e4b70bbe90e7af99">4845dbb5</a><span class="mojikumi-line-end">，</span>这个 commit 添加了 <code>X86_<wbr>USE_<wbr>VECTOR_<wbr>CONVERTS</code><span class="mojikumi-line-end">，</span>即 <code>X86_<wbr>TUNE_<wbr>USE_<wbr>VECTOR_<wbr>FP_<wbr>CONVERTS</code> 的前身<span class="mojikumi-line-end">。</span></p>
<p>4845dbb5 的邮件是 <a href="https://gcc.gnu.org/pipermail/gcc-patches/2007-September/225078.html">SSE conversion optimization</a><span class="mojikumi-line-end">，</span>里面写的很简略<span class="mojikumi-line-end">，</span>就是 <span class="mojikumi">“</span>Amdfam10 preffers doing packed conversions destinating SSE register rather than scalar<span class="mojikumi">”</span><span class="mojikumi-line-end">。</span></p>
<p>只不过 <a href="https://stackoverflow.com/questions/16597587/why-dont-gcc-and-clang-use-cvtss2sd-memory">performance - Why don't GCC and Clang use cvtss2sd [memory]? - Stack Overflow</a> 里还是有一些解释的<span class="mojikumi-line-end">，</span>反正简单来说就是 partial regisiter update 会有性能损失<span class="mojikumi-line-end">。</span></p>
<h2 id="对-m_core_all、m_generic-启用优化的原因" class="heading"><a href="#对-m_core_all、m_generic-启用优化的原因" class="heading-anchor" aria-label="章节： 对 m_CORE_ALL、m_GENERIC 启用优化的原因" tabindex="-1"></a><span>对 m_CORE_ALL<span class="mojikumi-line-end">、</span>m_GENERIC 启用优化的原因</span></h2>
<p>可以发现<span class="mojikumi-line-end">，</span>一开始有这个优化时<span class="mojikumi-line-end">，</span>是只对 <code>m_AMDFAM10</code> 启用的<span class="mojikumi-line-end">，</span>这和现在是一样的<span class="mojikumi-line-end">，</span>为什么中间绕了一圈又回到最开始的选择呢？继续寻找对 <code>m_CORE_ALL</code> 和 <code>m_GENERIC</code> 启用这个优化的原因<span class="mojikumi-line-end">。</span></p>
<p>首先找到 <a href="https://github.com/gcc-mirror/gcc/commit/3ad20bd44836e57453b743466f1ca0d591bd10ac">3ad20bd4</a><span class="mojikumi-line-end">，</span>这个 commit 把相关代码挪了个位置<span class="mojikumi-line-end">。</span></p>
<p>然后找到 <a href="https://github.com/gcc-mirror/gcc/commit/3a579e0930abe3ed91977a71284021399339860c">3a579e09</a><span class="mojikumi-line-end">，</span>这个 commit 把 <code>m_CORE2I7</code> 改成了 <code>m_CORE_ALL</code><span class="mojikumi-line-end">。</span></p>
<p>然后找到 <a href="https://github.com/gcc-mirror/gcc/commit/3a4ffde68cfc6fee3c20d282d6690f2569e2fffa">3a4ffde6</a><span class="mojikumi-line-end">，</span>这个 commit 修改了一堆处理器架构的 bitmask<span class="mojikumi-line-end">，</span>然后..把 <code>m_AMDFAM10</code> 和 <code>m_CORE2I7</code> 换了个位置 🤔</p>
<p>然后找到 <a href="https://github.com/gcc-mirror/gcc/commit/ab2477624b15b5d1fe43972f8f4d6082c6893624">ab247762</a><span class="mojikumi-line-end">，</span>这个 commit 新增了 <code>m_CORE2I7</code> 架构并且为它启用了 <code>X86_<wbr>TUNE_<wbr>USE_<wbr>VECTOR_<wbr>FP_<wbr>CONVERTS</code><span class="mojikumi-line-end">。</span>这个 patch 的邮件是 <a href="https://gcc.gnu.org/pipermail/gcc-patches/2010-November/300958.html">0005-Switch-Core-2-to-new-tuning</a><span class="mojikumi-line-end">，</span>给出的原因是 Core 2/i7 比较适合使用 generic tuning<span class="mojikumi-line-end">，</span>而此时 <code>X86_<wbr>TUNE_<wbr>USE_<wbr>VECTOR_<wbr>FP_<wbr>CONVERTS</code> 是对 <code>m_GENERIC</code> 启用的<span class="mojikumi-line-end">，</span>就也对 <code>m_CORE2I7</code> 启用了<span class="mojikumi-line-end">。</span></p>
<p>这时再回头看上面找到的 <a href="https://github.com/gcc-mirror/gcc/commit/54723b46231868447f68ed5322d916bd05bffae3">54723b46</a><span class="mojikumi-line-end">，</span>这个 commit 将 <code>TARGET_<wbr>USE_<wbr>VECTOR_<wbr>CONVERTS<wbr> || <wbr>TARGET_<wbr>GENERIC</code> 改成了 <code>TARGET_<wbr>USE_<wbr>VECTOR_<wbr>FP_<wbr>CONVERTS</code><span class="mojikumi-line-end">，</span>所以要 blame 这个 <code>|| <wbr>TARGET_<wbr>GENERIC</code><span class="mojikumi-line-end">。</span></p>
<p>最后找到是 <a href="https://github.com/gcc-mirror/gcc/commit/bf019a1f7f992a1feb985c4b656e527475e73a30">bf019a1f</a> 添加了 <code>|| <wbr>TARGET_<wbr>GENERIC</code><span class="mojikumi-line-end">。</span>这个 patch 的邮件是 <a href="https://gcc.gnu.org/pipermail/gcc-patches/2007-September/225425.html">PR target/33396</a><span class="mojikumi-line-end">，</span>时间上紧跟着最初的 4845dbb5<span class="mojikumi-line-end">，</span>而 changelog 和邮件里只提到了添加 <code>TARGET_<wbr>SSE_<wbr>MATH</code> 而没有提到添加 <code>TARGET_<wbr>GENERIC</code> 的原因<span class="mojikumi-line-end">，</span>并且这封邮件还没人回复<span class="mojikumi-line-end">。</span></p>
<p>至此<span class="mojikumi-line-end">，</span>我已经不知道能如何继续探究下去了<span class="mojikumi-line-end">。</span>我感觉可能是<span class="mojikumi-line-end">：</span></p>
<ol>
<li><a href="https://gcc.gnu.org/pipermail/gcc-patches/2007-September/225078.html">SSE conversion optimization</a> 中提到 <span class="mojikumi">“</span>We are now testing if the patch is good for generic<span class="mojikumi">”</span><span class="mojikumi-line-end">，</span>可能他自己测试之后因为某些原因得到了这个优化 good for generic 的结论<span class="mojikumi-line-end">，</span>就 commit 了<span class="mojikumi-line-end">，</span>也没再解释<span class="mojikumi-line-end">；</span></li>
<li>或者是<span class="mojikumi-line-end">，</span><a href="https://gcc.gnu.org/pipermail/gcc-patches/2007-September/225425.html">PR target/33396</a> 里提到了 <span class="mojikumi">“</span>failure with 32bit generic<span class="mojikumi">”</span><span class="mojikumi-line-end">，</span>可能是测试的时候加上了 <code>TARGET_<wbr>GENERIC</code><span class="mojikumi-line-end">，</span>后来忘记删掉了 🤔</li>
<li>或者是<span class="mojikumi-line-end">，</span>有什么其他原因<span class="mojikumi-line-end">，</span>但忘记写在 log / 邮件里了<span class="mojikumi-line-end">，</span>或者写在某个隐秘的角落我没找到<span class="mojikumi-line-end">。</span></li>
</ol>
<p>反正不管是什么原因<span class="mojikumi-line-end">，</span>bf019a1f 都是一个 commit 做了两件事<span class="mojikumi-line-end">，</span>还只写了一件事的 changelog<span class="mojikumi-line-end">，</span>导致这成了一个谜<span class="mojikumi-line-end">。</span></p>
<h2 id="与其他编译器的对比" class="heading"><a href="#与其他编译器的对比" class="heading-anchor" aria-label="章节： 与其他编译器的对比" tabindex="-1"></a><span>与其他编译器的对比</span></h2>
<p>使用 <a href="https://gcc.godbolt.org/">Compiler Explorer</a> 看一下其他编译器是怎么做的<span class="mojikumi-line-end">。</span></p>
<p>clang: 无论是否 <code>-<wbr>mtune<wbr>=<wbr>amdfam10</code> 都没有 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code><span class="mojikumi-line-end">。</span></p>
<p>MSVC: 无论是否 <code>-<wbr>mtune<wbr>=<wbr>amdfam10</code> 都是 source in register 则 <code>cvtss2sd</code>/<code>cvtsd2ss</code><span class="mojikumi-line-end">，</span>source in memory 则表现出 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code> 的行为<span class="mojikumi-line-end">。</span></p>
<p>但是我并不知道如何研究其他编译器为什么做出这样的选择 😢</p>
<h2 id="性能测试" class="heading"><a href="#性能测试" class="heading-anchor" aria-label="章节： 性能测试" tabindex="-1"></a><span>性能测试</span></h2>
<p>最后来实际测试一下这个优化的性能<span class="mojikumi-line-end">。</span></p>
<p>测试使用的代码为 <a href="https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg61372.html">[PATCH] disable use_vector_fp_converts for m_CORE_ALL</a> 中的 <code>1.c</code> 和 <code>2.c</code><span class="mojikumi-line-end">，</span>但原来的 <code>2.c</code> 用时太短<span class="mojikumi-line-end">，</span>所以把循环范围改成了 <code>1ll &#x3C;&#x3C; 32</code><span class="mojikumi-line-end">：</span></p>
<a id="测试用代码" name="测试用代码" aria-hidden="true"></a>
<aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h3 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>测试用代码</span></h3><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><p><code>1.c</code>:</p><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="C 代码块" data-v-c675dba6>C</h4><ile-root id="ile-7"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-7--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">float</span><span style="color: #403F53"> total </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #AA0982">0.2</span><span style="color: #403F53">;</span></span>
<span><span style="color: #994CC3">int</span><span style="color: #403F53"> k </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #AA0982">5</span><span style="color: #403F53">;</span></span>
<span></span>
<span><span style="color: #994CC3">int</span><span style="color: #403F53"> </span><span style="color: #4876D6">main</span><span style="color: #403F53">()</span></span>
<span><span style="color: #403F53">{</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">int</span><span style="color: #403F53"> i;</span></span>
<span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">for</span><span style="color: #403F53"> (i </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #AA0982">0</span><span style="color: #403F53">; i </span><span style="color: #994CC3">&lt;</span><span style="color: #403F53"> </span><span style="color: #AA0982">1000000000</span><span style="color: #403F53">; i</span><span style="color: #994CC3">++</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">    {</span></span>
<span><span style="color: #403F53">        total </span><span style="color: #994CC3">+=</span><span style="color: #403F53"> (</span><span style="color: #AA0982">0.5</span><span style="color: #403F53"> </span><span style="color: #0C969B">+</span><span style="color: #403F53"> k);</span></span>
<span><span style="color: #403F53">    }</span></span>
<span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">return</span><span style="color: #403F53"> total </span><span style="color: #994CC3">==</span><span style="color: #403F53"> </span><span style="color: #AA0982">0.3</span><span style="color: #403F53">;</span></span>
<span><span style="color: #403F53">}</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">float</span><span style="color: #D6DEEB"> total </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">0.2</span><span style="color: #D6DEEB">;</span></span>
<span><span style="color: #C792EA">int</span><span style="color: #D6DEEB"> k </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">5</span><span style="color: #D6DEEB">;</span></span>
<span></span>
<span><span style="color: #C792EA">int</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">main</span><span style="color: #D6DEEB">()</span></span>
<span><span style="color: #D6DEEB">{</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">int</span><span style="color: #D6DEEB"> i;</span></span>
<span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">for</span><span style="color: #D6DEEB"> (i </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">0</span><span style="color: #D6DEEB">; i </span><span style="color: #C792EA">&lt;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">1000000000</span><span style="color: #D6DEEB">; i</span><span style="color: #C792EA">++</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">    {</span></span>
<span><span style="color: #D6DEEB">        total </span><span style="color: #C792EA">+=</span><span style="color: #D6DEEB"> (</span><span style="color: #F78C6C">0.5</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">+</span><span style="color: #D6DEEB"> k);</span></span>
<span><span style="color: #D6DEEB">    }</span></span>
<span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> total </span><span style="color: #C792EA">==</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">0.3</span><span style="color: #D6DEEB">;</span></span>
<span><span style="color: #D6DEEB">}</span></span></code></pre></div></section><p><code>2.c</code>:</p><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="C 代码块" data-v-c675dba6>C</h4><ile-root id="ile-8"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-8--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">double</span><span style="color: #403F53"> </span><span style="color: #4876D6">b</span><span style="color: #403F53">[</span><span style="color: #AA0982">1024</span><span style="color: #403F53">];</span></span>
<span></span>
<span><span style="color: #994CC3">float</span><span style="color: #403F53"> </span><span style="color: #4876D6">a</span><span style="color: #403F53">[</span><span style="color: #AA0982">1024</span><span style="color: #403F53">];</span></span>
<span></span>
<span><span style="color: #994CC3">int</span><span style="color: #403F53"> </span><span style="color: #4876D6">main</span><span style="color: #403F53">()</span></span>
<span><span style="color: #403F53">{</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">for</span><span style="color: #403F53">(</span><span style="color: #994CC3">long</span><span style="color: #403F53"> i </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #AA0982">0</span><span style="color: #403F53"> ; i </span><span style="color: #994CC3">&lt;</span><span style="color: #403F53"> (</span><span style="color: #AA0982">1ll</span><span style="color: #403F53"> </span><span style="color: #994CC3">&lt;&lt;</span><span style="color: #403F53"> </span><span style="color: #AA0982">32</span><span style="color: #403F53">); i</span><span style="color: #994CC3">++</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">      </span><span style="color: #4876D6">a</span><span style="color: #403F53">[i </span><span style="color: #0C969B">&amp;</span><span style="color: #403F53"> </span><span style="color: #AA0982">1023</span><span style="color: #403F53">] </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #4876D6">a</span><span style="color: #403F53">[i </span><span style="color: #0C969B">&amp;</span><span style="color: #403F53"> </span><span style="color: #AA0982">1023</span><span style="color: #403F53">] </span><span style="color: #0C969B">*</span><span style="color: #403F53"> (</span><span style="color: #994CC3">float</span><span style="color: #403F53">)</span><span style="color: #4876D6">b</span><span style="color: #403F53">[i </span><span style="color: #0C969B">&amp;</span><span style="color: #403F53"> </span><span style="color: #AA0982">1023</span><span style="color: #403F53">];</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">return</span><span style="color: #403F53"> (</span><span style="color: #994CC3">int</span><span style="color: #403F53">)</span><span style="color: #4876D6">a</span><span style="color: #403F53">[</span><span style="color: #AA0982">512</span><span style="color: #403F53">];</span></span>
<span><span style="color: #403F53">}</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">double</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">b</span><span style="color: #D6DEEB">[</span><span style="color: #F78C6C">1024</span><span style="color: #D6DEEB">];</span></span>
<span></span>
<span><span style="color: #C792EA">float</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">a</span><span style="color: #D6DEEB">[</span><span style="color: #F78C6C">1024</span><span style="color: #D6DEEB">];</span></span>
<span></span>
<span><span style="color: #C792EA">int</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">main</span><span style="color: #D6DEEB">()</span></span>
<span><span style="color: #D6DEEB">{</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">for</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">long</span><span style="color: #D6DEEB"> i </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">0</span><span style="color: #D6DEEB"> ; i </span><span style="color: #C792EA">&lt;</span><span style="color: #D6DEEB"> (</span><span style="color: #F78C6C">1</span><span style="color: #FFEB95">ll</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">&lt;&lt;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">32</span><span style="color: #D6DEEB">); i</span><span style="color: #C792EA">++</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">      </span><span style="color: #C5E478">a</span><span style="color: #D6DEEB">[i </span><span style="color: #7FDBCA">&amp;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">1023</span><span style="color: #D6DEEB">] </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">a</span><span style="color: #D6DEEB">[i </span><span style="color: #7FDBCA">&amp;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">1023</span><span style="color: #D6DEEB">] </span><span style="color: #7FDBCA">*</span><span style="color: #D6DEEB"> (</span><span style="color: #C792EA">float</span><span style="color: #D6DEEB">)</span><span style="color: #C5E478">b</span><span style="color: #D6DEEB">[i </span><span style="color: #7FDBCA">&amp;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">1023</span><span style="color: #D6DEEB">];</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> (</span><span style="color: #C792EA">int</span><span style="color: #D6DEEB">)</span><span style="color: #C5E478">a</span><span style="color: #D6DEEB">[</span><span style="color: #F78C6C">512</span><span style="color: #D6DEEB">];</span></span>
<span><span style="color: #D6DEEB">}</span></span></code></pre></div></section></div></details></aside>
<p>测试使用的编译选项有<span class="mojikumi-line-end">：</span></p>
<ol>
<li><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code></li>
<li><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts<wbr> -<wbr>mavx2</code></li>
<li><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code></li>
<li><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts<wbr> -<wbr>mavx2</code></li>
</ol>
<p>其中值得注意的是<span class="mojikumi-line-end">，</span>使用 2 号编译选项编译 <code>2.c</code> 时会通过将 <code>vcvtsd2ss</code> 指令的第二个 operand 设为 <code>%xmm1</code> 来代替 <code>pxor %xmm0, %xmm0</code> 以达到清空 <code>%xmm0</code> 的效果<span class="mojikumi-line-end">。</span></p>
<p>为了测试清空 XMM 寄存器的效果<span class="mojikumi-line-end">，</span>在这 4 种编译选项之外<span class="mojikumi-line-end">，</span>还对 <code>2.c</code> 增设了手动删掉用于清空 <code>%xmm0</code> 的指令的两份汇编代码<span class="mojikumi-line-end">。</span></p>
<p>所以总共有 10 份汇编代码用于测试<span class="mojikumi-line-end">：</span></p>
<ul>
<li>1-1: <code>1.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code></li>
<li>1-2: <code>1.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts<wbr> -<wbr>mavx2</code></li>
<li>1-3: <code>1.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code></li>
<li>1-4: <code>1.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts<wbr> -<wbr>mavx2</code></li>
<li>2-1: <code>2.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code></li>
<li>2-2: <code>2.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts<wbr> -<wbr>mavx2</code></li>
<li>2-3: <code>2.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code></li>
<li>2-4: <code>2.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts<wbr> -<wbr>mavx2</code></li>
<li>2-5: <code>2.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts</code><span class="mojikumi-line-end">，</span>然后删掉 <code>pxor %xmm0, %xmm0</code></li>
<li>2-6: <code>2.c</code><span class="mojikumi-line-end">，</span><code>-<wbr>O2<wbr> -<wbr>mtune<wbr>-<wbr>ctrl<wbr>=^<wbr>use_<wbr>vector_<wbr>fp_<wbr>converts<wbr> -<wbr>mavx2</code><span class="mojikumi-line-end">，</span>然后将 <code>vcvtsd2ss</code> 的第二个 operand 改为 <code>%xmm0</code><span class="mojikumi-line-end">。</span></li>
</ul>
<a id="测试用汇编代码" name="测试用汇编代码" aria-hidden="true"></a>
<aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h3 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>测试用汇编代码</span></h3><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>1-1</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-9"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-9--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">1.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">pxor</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movss</span><span style="color: #403F53">	total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	movl	</span><span style="color: #AA0982">$1000000000</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	cvtsi2sdl	k(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">addsd</span><span style="color: #403F53">	.LC0(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtss2sd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">addsd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtsd2ss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	subl	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtss2sd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ucomisd</span><span style="color: #403F53">	.LC1(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">setnp</span><span style="color: #403F53">	%</span><span style="color: #4876D6">dl</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cmove</span><span style="color: #403F53">	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	k</span></span>
<span><span style="color: #403F53">	.data</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	k, @object</span></span>
<span><span style="color: #403F53">	.size	k, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">k:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">5</span></span>
<span><span style="color: #403F53">	.globl	total</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	total, @object</span></span>
<span><span style="color: #403F53">	.size	total, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">total:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1045220557</span></span>
<span><span style="color: #403F53">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #AA0982">8</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC0:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">0</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1071644672</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC1:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">858993459</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1070805811</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">1.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">pxor</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">	total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	movl	</span><span style="color: #F78C6C">$1000000000</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	cvtsi2sdl	k(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">addsd</span><span style="color: #D6DEEB">	.LC0(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtss2sd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">addsd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtsd2ss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	subl	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtss2sd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ucomisd</span><span style="color: #D6DEEB">	.LC1(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">setnp</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">dl</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cmove</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	k</span></span>
<span><span style="color: #D6DEEB">	.data</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	k, @object</span></span>
<span><span style="color: #D6DEEB">	.size	k, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">k:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">5</span></span>
<span><span style="color: #D6DEEB">	.globl	total</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	total, @object</span></span>
<span><span style="color: #D6DEEB">	.size	total, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">total:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1045220557</span></span>
<span><span style="color: #D6DEEB">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC0:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">0</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1071644672</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC1:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">858993459</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1070805811</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>1-2</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-10"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-10--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">1.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vxorps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">	total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	movl	</span><span style="color: #AA0982">$1000000000</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	vcvtsi2sdl	k(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vaddsd</span><span style="color: #403F53">	.LC0(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vcvtss2sd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vaddsd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vcvtsd2ss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	subl	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vcvtss2sd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vucomisd</span><span style="color: #403F53">	.LC1(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">setnp</span><span style="color: #403F53">	%</span><span style="color: #4876D6">dl</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cmove</span><span style="color: #403F53">	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	k</span></span>
<span><span style="color: #403F53">	.data</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	k, @object</span></span>
<span><span style="color: #403F53">	.size	k, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">k:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">5</span></span>
<span><span style="color: #403F53">	.globl	total</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	total, @object</span></span>
<span><span style="color: #403F53">	.size	total, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">total:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1045220557</span></span>
<span><span style="color: #403F53">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #AA0982">8</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC0:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">0</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1071644672</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC1:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">858993459</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1070805811</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">1.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vxorps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">	total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	movl	</span><span style="color: #F78C6C">$1000000000</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	vcvtsi2sdl	k(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vaddsd</span><span style="color: #D6DEEB">	.LC0(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vcvtss2sd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vaddsd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vcvtsd2ss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	subl	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vcvtss2sd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vucomisd</span><span style="color: #D6DEEB">	.LC1(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">setnp</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">dl</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cmove</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	k</span></span>
<span><span style="color: #D6DEEB">	.data</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	k, @object</span></span>
<span><span style="color: #D6DEEB">	.size	k, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">k:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">5</span></span>
<span><span style="color: #D6DEEB">	.globl	total</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	total, @object</span></span>
<span><span style="color: #D6DEEB">	.size	total, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">total:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1045220557</span></span>
<span><span style="color: #D6DEEB">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC0:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">0</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1071644672</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC1:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">858993459</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1070805811</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>1-3</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-11"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-11--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">1.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">pxor</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movss</span><span style="color: #403F53">	total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	movl	</span><span style="color: #AA0982">$1000000000</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	cvtsi2sdl	k(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">addsd</span><span style="color: #403F53">	.LC0(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">unpcklps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtps2pd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">addsd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">unpcklpd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtpd2ps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	subl	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">unpcklps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtps2pd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ucomisd</span><span style="color: #403F53">	.LC1(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">setnp</span><span style="color: #403F53">	%</span><span style="color: #4876D6">dl</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cmove</span><span style="color: #403F53">	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	k</span></span>
<span><span style="color: #403F53">	.data</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	k, @object</span></span>
<span><span style="color: #403F53">	.size	k, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">k:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">5</span></span>
<span><span style="color: #403F53">	.globl	total</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	total, @object</span></span>
<span><span style="color: #403F53">	.size	total, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">total:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1045220557</span></span>
<span><span style="color: #403F53">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #AA0982">8</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC0:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">0</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1071644672</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC1:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">858993459</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1070805811</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">1.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">pxor</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">	total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	movl	</span><span style="color: #F78C6C">$1000000000</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	cvtsi2sdl	k(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">addsd</span><span style="color: #D6DEEB">	.LC0(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">unpcklps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtps2pd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">addsd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">unpcklpd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtpd2ps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	subl	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">unpcklps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtps2pd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ucomisd</span><span style="color: #D6DEEB">	.LC1(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">setnp</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">dl</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cmove</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	k</span></span>
<span><span style="color: #D6DEEB">	.data</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	k, @object</span></span>
<span><span style="color: #D6DEEB">	.size	k, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">k:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">5</span></span>
<span><span style="color: #D6DEEB">	.globl	total</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	total, @object</span></span>
<span><span style="color: #D6DEEB">	.size	total, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">total:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1045220557</span></span>
<span><span style="color: #D6DEEB">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC0:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">0</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1071644672</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC1:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">858993459</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1070805811</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>1-4</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-12"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-12--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">1.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vxorps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">	total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	movl	</span><span style="color: #AA0982">$1000000000</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	vcvtsi2sdl	k(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vaddsd</span><span style="color: #403F53">	.LC0(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vunpcklps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vcvtps2pd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vaddsd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovddup</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	vcvtpd2psx	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	subl	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, total(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vunpcklps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vcvtps2pd</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vucomisd</span><span style="color: #403F53">	.LC1(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">setnp</span><span style="color: #403F53">	%</span><span style="color: #4876D6">dl</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cmove</span><span style="color: #403F53">	%</span><span style="color: #4876D6">edx</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	k</span></span>
<span><span style="color: #403F53">	.data</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	k, @object</span></span>
<span><span style="color: #403F53">	.size	k, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">k:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">5</span></span>
<span><span style="color: #403F53">	.globl	total</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.type	total, @object</span></span>
<span><span style="color: #403F53">	.size	total, </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #4876D6">total:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1045220557</span></span>
<span><span style="color: #403F53">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #AA0982">8</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC0:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">0</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1071644672</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">8</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LC1:</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">858993459</span></span>
<span><span style="color: #403F53">	.long	</span><span style="color: #AA0982">1070805811</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">1.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vxorps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">	total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	movl	</span><span style="color: #F78C6C">$1000000000</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	vcvtsi2sdl	k(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vaddsd</span><span style="color: #D6DEEB">	.LC0(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vunpcklps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vcvtps2pd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vaddsd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovddup</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	vcvtpd2psx	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	subl	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, total(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vunpcklps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vcvtps2pd</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vucomisd</span><span style="color: #D6DEEB">	.LC1(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">setnp</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">dl</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cmove</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">edx</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	k</span></span>
<span><span style="color: #D6DEEB">	.data</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	k, @object</span></span>
<span><span style="color: #D6DEEB">	.size	k, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">k:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">5</span></span>
<span><span style="color: #D6DEEB">	.globl	total</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.type	total, @object</span></span>
<span><span style="color: #D6DEEB">	.size	total, </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #82AAFF">total:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1045220557</span></span>
<span><span style="color: #D6DEEB">	.section	.rodata.cst8,&quot;aM&quot;,@progbits,</span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC0:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">0</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1071644672</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">8</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LC1:</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">858993459</span></span>
<span><span style="color: #D6DEEB">	.long	</span><span style="color: #F78C6C">1070805811</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>2-1</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-13"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-13--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">2.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">eax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	leaq	a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rcx</span></span>
<span><span style="color: #403F53">	leaq	b(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rdi</span></span>
<span><span style="color: #403F53">	movabsq	</span><span style="color: #AA0982">$4294967296</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rsi</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movq</span><span style="color: #403F53">	%</span><span style="color: #4876D6">rax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rdx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">pxor</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	addq	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	andl	</span><span style="color: #AA0982">$1023</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtsd2ss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">8</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">mulss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, (%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	cmpq	%</span><span style="color: #4876D6">rsi</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	cvttss2sil	</span><span style="color: #AA0982">2048</span><span style="color: #403F53">+a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	a</span></span>
<span><span style="color: #403F53">	.bss</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	a, @object</span></span>
<span><span style="color: #403F53">	.size	a, </span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #4876D6">a:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #403F53">	.globl	b</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	b, @object</span></span>
<span><span style="color: #403F53">	.size	b, </span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #4876D6">b:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">2.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">eax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	leaq	a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rcx</span></span>
<span><span style="color: #D6DEEB">	leaq	b(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rdi</span></span>
<span><span style="color: #D6DEEB">	movabsq	</span><span style="color: #F78C6C">$4294967296</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rsi</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">rax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rdx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">pxor</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	addq	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	andl	</span><span style="color: #F78C6C">$1023</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtsd2ss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">8</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">mulss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, (%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	cmpq	%</span><span style="color: #82AAFF">rsi</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	cvttss2sil	</span><span style="color: #F78C6C">2048</span><span style="color: #D6DEEB">+a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	a</span></span>
<span><span style="color: #D6DEEB">	.bss</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	a, @object</span></span>
<span><span style="color: #D6DEEB">	.size	a, </span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #82AAFF">a:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #D6DEEB">	.globl	b</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	b, @object</span></span>
<span><span style="color: #D6DEEB">	.size	b, </span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #82AAFF">b:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>2-2</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-14"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-14--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">2.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vxorps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm1</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">eax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	leaq	a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rcx</span></span>
<span><span style="color: #403F53">	movabsq	</span><span style="color: #AA0982">$4294967296</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rsi</span></span>
<span><span style="color: #403F53">	leaq	b(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rdi</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movq</span><span style="color: #403F53">	%</span><span style="color: #4876D6">rax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rdx</span></span>
<span><span style="color: #403F53">	addq	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	andl	</span><span style="color: #AA0982">$1023</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vcvtsd2ss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">8</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmulss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, (%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	cmpq	%</span><span style="color: #4876D6">rsi</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	vcvttss2sil	</span><span style="color: #AA0982">2048</span><span style="color: #403F53">+a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	a</span></span>
<span><span style="color: #403F53">	.bss</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	a, @object</span></span>
<span><span style="color: #403F53">	.size	a, </span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #4876D6">a:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #403F53">	.globl	b</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	b, @object</span></span>
<span><span style="color: #403F53">	.size	b, </span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #4876D6">b:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">2.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vxorps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm1</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">eax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	leaq	a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rcx</span></span>
<span><span style="color: #D6DEEB">	movabsq	</span><span style="color: #F78C6C">$4294967296</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rsi</span></span>
<span><span style="color: #D6DEEB">	leaq	b(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rdi</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">rax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rdx</span></span>
<span><span style="color: #D6DEEB">	addq	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	andl	</span><span style="color: #F78C6C">$1023</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vcvtsd2ss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">8</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmulss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, (%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	cmpq	%</span><span style="color: #82AAFF">rsi</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	vcvttss2sil	</span><span style="color: #F78C6C">2048</span><span style="color: #D6DEEB">+a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	a</span></span>
<span><span style="color: #D6DEEB">	.bss</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	a, @object</span></span>
<span><span style="color: #D6DEEB">	.size	a, </span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #82AAFF">a:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #D6DEEB">	.globl	b</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	b, @object</span></span>
<span><span style="color: #D6DEEB">	.size	b, </span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #82AAFF">b:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>2-3</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-15"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-15--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">2.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">eax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	leaq	a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rcx</span></span>
<span><span style="color: #403F53">	leaq	b(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rdi</span></span>
<span><span style="color: #403F53">	movabsq	</span><span style="color: #AA0982">$4294967296</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rsi</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movq</span><span style="color: #403F53">	%</span><span style="color: #4876D6">rax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rdx</span></span>
<span><span style="color: #403F53">	addq	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	andl	</span><span style="color: #AA0982">$1023</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movq</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">8</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtpd2ps</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">mulss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, (%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	cmpq	%</span><span style="color: #4876D6">rsi</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	cvttss2sil	</span><span style="color: #AA0982">2048</span><span style="color: #403F53">+a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	a</span></span>
<span><span style="color: #403F53">	.bss</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	a, @object</span></span>
<span><span style="color: #403F53">	.size	a, </span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #4876D6">a:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #403F53">	.globl	b</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	b, @object</span></span>
<span><span style="color: #403F53">	.size	b, </span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #4876D6">b:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">2.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">eax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	leaq	a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rcx</span></span>
<span><span style="color: #D6DEEB">	leaq	b(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rdi</span></span>
<span><span style="color: #D6DEEB">	movabsq	</span><span style="color: #F78C6C">$4294967296</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rsi</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">rax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rdx</span></span>
<span><span style="color: #D6DEEB">	addq	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	andl	</span><span style="color: #F78C6C">$1023</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">8</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtpd2ps</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">mulss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, (%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	cmpq	%</span><span style="color: #82AAFF">rsi</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	cvttss2sil	</span><span style="color: #F78C6C">2048</span><span style="color: #D6DEEB">+a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	a</span></span>
<span><span style="color: #D6DEEB">	.bss</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	a, @object</span></span>
<span><span style="color: #D6DEEB">	.size	a, </span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #82AAFF">a:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #D6DEEB">	.globl	b</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	b, @object</span></span>
<span><span style="color: #D6DEEB">	.size	b, </span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #82AAFF">b:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>2-4</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-16"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-16--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">2.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">eax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	leaq	a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rcx</span></span>
<span><span style="color: #403F53">	leaq	b(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rdi</span></span>
<span><span style="color: #403F53">	movabsq	</span><span style="color: #AA0982">$4294967296</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rsi</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movq</span><span style="color: #403F53">	%</span><span style="color: #4876D6">rax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rdx</span></span>
<span><span style="color: #403F53">	addq	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	andl	</span><span style="color: #AA0982">$1023</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovq</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">8</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	vcvtpd2psx	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmulss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, (%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	cmpq	%</span><span style="color: #4876D6">rsi</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	vcvttss2sil	</span><span style="color: #AA0982">2048</span><span style="color: #403F53">+a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	a</span></span>
<span><span style="color: #403F53">	.bss</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	a, @object</span></span>
<span><span style="color: #403F53">	.size	a, </span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #4876D6">a:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #403F53">	.globl	b</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	b, @object</span></span>
<span><span style="color: #403F53">	.size	b, </span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #4876D6">b:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">2.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">eax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	leaq	a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rcx</span></span>
<span><span style="color: #D6DEEB">	leaq	b(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rdi</span></span>
<span><span style="color: #D6DEEB">	movabsq	</span><span style="color: #F78C6C">$4294967296</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rsi</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">rax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rdx</span></span>
<span><span style="color: #D6DEEB">	addq	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	andl	</span><span style="color: #F78C6C">$1023</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovq</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">8</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	vcvtpd2psx	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmulss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, (%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	cmpq	%</span><span style="color: #82AAFF">rsi</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	vcvttss2sil	</span><span style="color: #F78C6C">2048</span><span style="color: #D6DEEB">+a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	a</span></span>
<span><span style="color: #D6DEEB">	.bss</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	a, @object</span></span>
<span><span style="color: #D6DEEB">	.size	a, </span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #82AAFF">a:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #D6DEEB">	.globl	b</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	b, @object</span></span>
<span><span style="color: #D6DEEB">	.size	b, </span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #82AAFF">b:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>2-5</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-17"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-17--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">2.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">eax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	leaq	a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rcx</span></span>
<span><span style="color: #403F53">	leaq	b(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rdi</span></span>
<span><span style="color: #403F53">	movabsq	</span><span style="color: #AA0982">$4294967296</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rsi</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movq</span><span style="color: #403F53">	%</span><span style="color: #4876D6">rax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rdx</span></span>
<span><span style="color: #403F53">	addq	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	andl	</span><span style="color: #AA0982">$1023</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">cvtsd2ss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">8</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">mulss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, (%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	cmpq	%</span><span style="color: #4876D6">rsi</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	cvttss2sil	</span><span style="color: #AA0982">2048</span><span style="color: #403F53">+a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	a</span></span>
<span><span style="color: #403F53">	.bss</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	a, @object</span></span>
<span><span style="color: #403F53">	.size	a, </span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #4876D6">a:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #403F53">	.globl	b</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	b, @object</span></span>
<span><span style="color: #403F53">	.size	b, </span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #4876D6">b:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">2.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">eax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	leaq	a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rcx</span></span>
<span><span style="color: #D6DEEB">	leaq	b(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rdi</span></span>
<span><span style="color: #D6DEEB">	movabsq	</span><span style="color: #F78C6C">$4294967296</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rsi</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">rax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rdx</span></span>
<span><span style="color: #D6DEEB">	addq	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	andl	</span><span style="color: #F78C6C">$1023</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">cvtsd2ss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">8</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">mulss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, (%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	cmpq	%</span><span style="color: #82AAFF">rsi</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	cvttss2sil	</span><span style="color: #F78C6C">2048</span><span style="color: #D6DEEB">+a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	a</span></span>
<span><span style="color: #D6DEEB">	.bss</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	a, @object</span></span>
<span><span style="color: #D6DEEB">	.size	a, </span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #82AAFF">a:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #D6DEEB">	.globl	b</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	b, @object</span></span>
<span><span style="color: #D6DEEB">	.size	b, </span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #82AAFF">b:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside><aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h4 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>2-6</span></h4><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Assembly 代码块" data-v-c675dba6>Assembly</h5><ile-root id="ile-18"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-18--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">	.file	&quot;</span><span style="color: #AA0982">2.</span><span style="color: #403F53">c&quot;</span></span>
<span><span style="color: #403F53">	.text</span></span>
<span><span style="color: #403F53">	.section	.text.startup,&quot;</span><span style="color: #4876D6">ax</span><span style="color: #403F53">&quot;,@progbits</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span></span>
<span><span style="color: #403F53">	.globl	main</span></span>
<span><span style="color: #403F53">	.type	main, @function</span></span>
<span><span style="color: #4876D6">main:</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFB0:</span></span>
<span><span style="color: #403F53">	.cfi_startproc</span></span>
<span><span style="color: #403F53">	xorl	%</span><span style="color: #4876D6">eax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	leaq	a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rcx</span></span>
<span><span style="color: #403F53">	movabsq	</span><span style="color: #AA0982">$4294967296</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rsi</span></span>
<span><span style="color: #403F53">	leaq	b(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">rdi</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">4</span><span style="color: #403F53">,,</span><span style="color: #AA0982">10</span></span>
<span><span style="color: #403F53">	.p2align </span><span style="color: #AA0982">3</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">L2:</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">movq</span><span style="color: #403F53">	%</span><span style="color: #4876D6">rax</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rdx</span></span>
<span><span style="color: #403F53">	addq	</span><span style="color: #AA0982">$1</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	andl	</span><span style="color: #AA0982">$1023</span><span style="color: #403F53">, %</span><span style="color: #4876D6">edx</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vcvtsd2ss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rdi</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">8</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmulss</span><span style="color: #403F53">	(%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">), %</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, %</span><span style="color: #4876D6">xmm0</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">vmovss</span><span style="color: #403F53">	%</span><span style="color: #4876D6">xmm0</span><span style="color: #403F53">, (%</span><span style="color: #4876D6">rcx</span><span style="color: #403F53">,%</span><span style="color: #4876D6">rdx</span><span style="color: #403F53">,</span><span style="color: #AA0982">4</span><span style="color: #403F53">)</span></span>
<span><span style="color: #403F53">	cmpq	%</span><span style="color: #4876D6">rsi</span><span style="color: #403F53">, %</span><span style="color: #4876D6">rax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">jne</span><span style="color: #403F53">	.L2</span></span>
<span><span style="color: #403F53">	vcvttss2sil	</span><span style="color: #AA0982">2048</span><span style="color: #403F53">+a(%</span><span style="color: #4876D6">rip</span><span style="color: #403F53">), %</span><span style="color: #4876D6">eax</span></span>
<span><span style="color: #403F53">	</span><span style="color: #0C969B">ret</span></span>
<span><span style="color: #403F53">	.cfi_endproc</span></span>
<span><span style="color: #994CC3">.</span><span style="color: #4876D6">LFE0:</span></span>
<span><span style="color: #403F53">	.size	main, .-main</span></span>
<span><span style="color: #403F53">	.globl	a</span></span>
<span><span style="color: #403F53">	.bss</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	a, @object</span></span>
<span><span style="color: #403F53">	.size	a, </span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #4876D6">a:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">4096</span></span>
<span><span style="color: #403F53">	.globl	b</span></span>
<span><span style="color: #403F53">	.align </span><span style="color: #AA0982">32</span></span>
<span><span style="color: #403F53">	.type	b, @object</span></span>
<span><span style="color: #403F53">	.size	b, </span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #4876D6">b:</span></span>
<span><span style="color: #403F53">	.zero	</span><span style="color: #AA0982">8192</span></span>
<span><span style="color: #403F53">	.ident	&quot;</span><span style="color: #4876D6">GCC:</span><span style="color: #403F53"> (GNU) </span><span style="color: #AA0982">12.2</span><span style="color: #994CC3">.</span><span style="color: #4876D6">0</span><span style="color: #403F53">&quot;</span></span>
<span><span style="color: #403F53">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">	.file	&quot;</span><span style="color: #F78C6C">2.</span><span style="color: #D6DEEB">c&quot;</span></span>
<span><span style="color: #D6DEEB">	.text</span></span>
<span><span style="color: #D6DEEB">	.section	.text.startup,&quot;</span><span style="color: #82AAFF">ax</span><span style="color: #D6DEEB">&quot;,@progbits</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span></span>
<span><span style="color: #D6DEEB">	.globl	main</span></span>
<span><span style="color: #D6DEEB">	.type	main, @function</span></span>
<span><span style="color: #82AAFF">main:</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFB0:</span></span>
<span><span style="color: #D6DEEB">	.cfi_startproc</span></span>
<span><span style="color: #D6DEEB">	xorl	%</span><span style="color: #82AAFF">eax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	leaq	a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rcx</span></span>
<span><span style="color: #D6DEEB">	movabsq	</span><span style="color: #F78C6C">$4294967296</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rsi</span></span>
<span><span style="color: #D6DEEB">	leaq	b(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">rdi</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">,,</span><span style="color: #F78C6C">10</span></span>
<span><span style="color: #D6DEEB">	.p2align </span><span style="color: #F78C6C">3</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">L2:</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">movq</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">rax</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rdx</span></span>
<span><span style="color: #D6DEEB">	addq	</span><span style="color: #F78C6C">$1</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	andl	</span><span style="color: #F78C6C">$1023</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">edx</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vcvtsd2ss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rdi</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">8</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmulss</span><span style="color: #D6DEEB">	(%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">xmm0</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">vmovss</span><span style="color: #D6DEEB">	%</span><span style="color: #82AAFF">xmm0</span><span style="color: #D6DEEB">, (%</span><span style="color: #82AAFF">rcx</span><span style="color: #D6DEEB">,%</span><span style="color: #82AAFF">rdx</span><span style="color: #D6DEEB">,</span><span style="color: #F78C6C">4</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">	cmpq	%</span><span style="color: #82AAFF">rsi</span><span style="color: #D6DEEB">, %</span><span style="color: #82AAFF">rax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">jne</span><span style="color: #D6DEEB">	.L2</span></span>
<span><span style="color: #D6DEEB">	vcvttss2sil	</span><span style="color: #F78C6C">2048</span><span style="color: #D6DEEB">+a(%</span><span style="color: #82AAFF">rip</span><span style="color: #D6DEEB">), %</span><span style="color: #82AAFF">eax</span></span>
<span><span style="color: #D6DEEB">	</span><span style="color: #7FDBCA">ret</span></span>
<span><span style="color: #D6DEEB">	.cfi_endproc</span></span>
<span><span style="color: #C792EA">.</span><span style="color: #82AAFF">LFE0:</span></span>
<span><span style="color: #D6DEEB">	.size	main, .-main</span></span>
<span><span style="color: #D6DEEB">	.globl	a</span></span>
<span><span style="color: #D6DEEB">	.bss</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	a, @object</span></span>
<span><span style="color: #D6DEEB">	.size	a, </span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #82AAFF">a:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">4096</span></span>
<span><span style="color: #D6DEEB">	.globl	b</span></span>
<span><span style="color: #D6DEEB">	.align </span><span style="color: #F78C6C">32</span></span>
<span><span style="color: #D6DEEB">	.type	b, @object</span></span>
<span><span style="color: #D6DEEB">	.size	b, </span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #82AAFF">b:</span></span>
<span><span style="color: #D6DEEB">	.zero	</span><span style="color: #F78C6C">8192</span></span>
<span><span style="color: #D6DEEB">	.ident	&quot;</span><span style="color: #82AAFF">GCC:</span><span style="color: #D6DEEB"> (GNU) </span><span style="color: #F78C6C">12.2</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">0</span><span style="color: #D6DEEB">&quot;</span></span>
<span><span style="color: #D6DEEB">	.section	.note.GNU-stack,&quot;&quot;,@progbits</span></span></code></pre></div></section></div></details></aside></div></details></aside>
<p>用于测试的机器有五台<span class="mojikumi-line-end">，</span>CPU 型号分别为<span class="mojikumi-line-end">：</span></p>
<ul>
<li>A: AMD Ryzen 7 4800H with Radeon Graphics <span class="mojikumi">（</span>笔记本<span class="mojikumi-line-end">）</span></li>
<li>B: Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz <span class="mojikumi">（</span>Hostwinds<span class="mojikumi-line-end">）</span></li>
<li>C: Intel(R) Xeon(R) CPU E5-4610 v2 @ 2.30GHz <span class="mojikumi">（</span>THU 校内服务器<span class="mojikumi-line-end">）</span></li>
<li>D: Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz <span class="mojikumi">（</span>腾讯云<span class="mojikumi-line-end">）</span></li>
<li>E: Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz <span class="mojikumi">（</span>阿里云<span class="mojikumi-line-end">）</span></li>
</ul>
<p>测试时<span class="mojikumi-line-end">，</span>将程序运行 10 遍<span class="mojikumi-line-end">，</span>记录其中第 3 短的用时<span class="mojikumi-line-end">。</span></p>
<a id="ssh-远程测试脚本" name="ssh-远程测试脚本" aria-hidden="true"></a>
<aside role="note" data-v-a2ab257f><details class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><summary class="p-3 flex justify-between items-center cursor-pointer" data-v-a2ab257f><h3 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>ssh 远程测试脚本</span></h3><span class="details-icon text-5" data-v-a2ab257f></span></summary><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h4><ile-root id="ile-19"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-19--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #4876D6">eval</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(ssh-agent)</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #4876D6">ssh-add</span></span>
<span></span>
<span><span style="color: #4876D6">dir</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(ssh </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$1</span><span style="color: #111111">&quot;</span><span style="color: #4876D6"> mktemp -d)</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #4876D6">scp</span><span style="color: #403F53"> </span><span style="color: #4876D6">./</span><span style="color: #0C969B">*</span><span style="color: #4876D6">-</span><span style="color: #0C969B">*</span><span style="color: #4876D6">.s</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$1</span><span style="color: #C96765">:</span><span style="color: #4876D6">$dir</span><span style="color: #111111">&quot;</span></span>
<span></span>
<span><span style="color: #4876D6">ssh</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$1</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #111111">&#39;</span><span style="color: #C96765">grep &quot;model name&quot; /proc/cpuinfo | head -n1</span><span style="color: #111111">&#39;</span></span>
<span></span>
<span><span style="color: #994CC3">for</span><span style="color: #403F53"> </span><span style="color: #4876D6">i</span><span style="color: #403F53"> </span><span style="color: #994CC3">in</span><span style="color: #403F53"> 1-1 1-2 1-3 1-4 2-1 2-2 2-3 2-4 2-5 2-6; </span><span style="color: #994CC3">do</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">echo</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$i</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">ssh</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$1</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #4876D6">gcc</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$dir</span><span style="color: #C96765">/</span><span style="color: #4876D6">$i</span><span style="color: #C96765">.s</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #4876D6">-o</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$dir</span><span style="color: #C96765">/</span><span style="color: #4876D6">$i</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">for</span><span style="color: #403F53"> </span><span style="color: #4876D6">_</span><span style="color: #403F53"> </span><span style="color: #994CC3">in</span><span style="color: #403F53"> </span><span style="color: #4876D6">$(seq </span><span style="color: #AA0982">1</span><span style="color: #4876D6"> </span><span style="color: #AA0982">10</span><span style="color: #4876D6">)</span><span style="color: #403F53">; </span><span style="color: #994CC3">do</span></span>
<span><span style="color: #403F53">        </span><span style="color: #4876D6">ssh</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$1</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #4876D6">/usr/bin/time</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$dir</span><span style="color: #C96765">/</span><span style="color: #4876D6">$i</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">done</span></span>
<span><span style="color: #994CC3">done</span></span>
<span></span>
<span><span style="color: #4876D6">ssh</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$1</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #4876D6">rm</span><span style="color: #403F53"> </span><span style="color: #4876D6">-r</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$dir</span><span style="color: #111111">&quot;</span></span>
<span></span>
<span><span style="color: #4876D6">ssh-agent</span><span style="color: #403F53"> </span><span style="color: #4876D6">-k</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #C5E478">eval</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">ssh-agent</span><span style="color: #ECC48D">)</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #82AAFF">ssh-add</span></span>
<span></span>
<span><span style="color: #C5E478">dir</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">ssh</span><span style="color: #ECC48D"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$1</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D"> mktemp </span><span style="color: #82AAFF">-d</span><span style="color: #ECC48D">)</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #82AAFF">scp</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">./</span><span style="color: #7FDBCA">*</span><span style="color: #ECC48D">-</span><span style="color: #7FDBCA">*</span><span style="color: #ECC48D">.s</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$1</span><span style="color: #ECC48D">:</span><span style="color: #C5E478">$dir</span><span style="color: #D9F5DD">&quot;</span></span>
<span></span>
<span><span style="color: #82AAFF">ssh</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$1</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">grep &quot;model name&quot; /proc/cpuinfo | head -n1</span><span style="color: #D9F5DD">&#39;</span></span>
<span></span>
<span><span style="color: #C792EA">for</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">i</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">in</span><span style="color: #D6DEEB"> 1-1 1-2 1-3 1-4 2-1 2-2 2-3 2-4 2-5 2-6; </span><span style="color: #C792EA">do</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C5E478">echo</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$i</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">ssh</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$1</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">gcc</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$dir</span><span style="color: #ECC48D">/</span><span style="color: #C5E478">$i</span><span style="color: #ECC48D">.s</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-o</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$dir</span><span style="color: #ECC48D">/</span><span style="color: #C5E478">$i</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">for</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">_</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">in</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">seq</span><span style="color: #ECC48D"> </span><span style="color: #F78C6C">1</span><span style="color: #ECC48D"> </span><span style="color: #F78C6C">10</span><span style="color: #ECC48D">)</span><span style="color: #D6DEEB">; </span><span style="color: #C792EA">do</span></span>
<span><span style="color: #D6DEEB">        </span><span style="color: #82AAFF">ssh</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$1</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">/usr/bin/time</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$dir</span><span style="color: #ECC48D">/</span><span style="color: #C5E478">$i</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">done</span></span>
<span><span style="color: #C792EA">done</span></span>
<span></span>
<span><span style="color: #82AAFF">ssh</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$1</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">rm</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-r</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$dir</span><span style="color: #D9F5DD">&quot;</span></span>
<span></span>
<span><span style="color: #82AAFF">ssh-agent</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-k</span></span></code></pre></div></section></div></details></aside>
<p>测试结果为<span class="mojikumi-line-end">：</span></p>
<div class="overflow-auto my-6"><table>
<thead>
<tr>
<th align="center">代码/用时(s)</th>
<th align="center">A</th>
<th align="center">B</th>
<th align="center">C</th>
<th align="center">D</th>
<th align="center">E</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">1-1</td>
<td align="center">2.10</td>
<td align="center">3.15</td>
<td align="center">3.96</td>
<td align="center">4.62</td>
<td align="center">4.41</td>
</tr>
<tr>
<td align="center">1-2</td>
<td align="center">2.10</td>
<td align="center">3.11</td>
<td align="center">3.95</td>
<td align="center">4.61</td>
<td align="center">4.42</td>
</tr>
<tr>
<td align="center">1-3</td>
<td align="center">3.50</td>
<td align="center">3.82</td>
<td align="center">4.52</td>
<td align="center">5.30</td>
<td align="center">5.04</td>
</tr>
<tr>
<td align="center">1-4</td>
<td align="center">3.50</td>
<td align="center">3.77</td>
<td align="center">4.90</td>
<td align="center">5.30</td>
<td align="center">5.04</td>
</tr>
<tr>
<td align="center">2-1</td>
<td align="center">1.62</td>
<td align="center">6.47</td>
<td align="center">7.22</td>
<td align="center">3.59</td>
<td align="center">3.43</td>
</tr>
<tr>
<td align="center">2-2</td>
<td align="center">1.41</td>
<td align="center">6.26</td>
<td align="center">7.65</td>
<td align="center">4.31</td>
<td align="center">4.08</td>
</tr>
<tr>
<td align="center">2-3</td>
<td align="center">1.61</td>
<td align="center">4.66</td>
<td align="center">5.31</td>
<td align="center">3.24</td>
<td align="center">3.11</td>
</tr>
<tr>
<td align="center">2-4</td>
<td align="center">1.61</td>
<td align="center">4.76</td>
<td align="center">5.69</td>
<td align="center">3.59</td>
<td align="center">3.43</td>
</tr>
<tr>
<td align="center">2-5</td>
<td align="center">1.40</td>
<td align="center">9.06</td>
<td align="center">10.41</td>
<td align="center">7.12</td>
<td align="center">6.77</td>
</tr>
<tr>
<td align="center">2-6</td>
<td align="center">1.41</td>
<td align="center">9.03</td>
<td align="center">10.98</td>
<td align="center">7.11</td>
<td align="center">6.77</td>
</tr>
</tbody>
</table></div>
<p>这数据真的非常让人怀疑是不是测错了<span class="mojikumi-line-start">（</span></p>
<p>只能说是大千世界无奇不有<span class="mojikumi-line-end">，</span>性能优化实在是太玄学了<span class="mojikumi-line-start">（</span></p>
<p>但测试似乎表明<span class="mojikumi-line-end">，</span>source in register 时关闭 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code><span class="mojikumi-line-end">、</span>source in memory 时开启 <code>use_<wbr>vector_<wbr>fp_<wbr>converts</code><span class="mojikumi-line-end">，</span>也就是 MSVC 的选择<span class="mojikumi-line-end">，</span>在总体上是比较优的<span class="mojikumi-line-end">。</span></p>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/gcc">gcc</category>
            <category domain="https://ouuan.moe/tag/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96">性能优化</category>
            <category domain="https://ouuan.moe/tag/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E8%AE%B0%E5%BD%95">问题解决记录</category>
        </item>
    </channel>
</rss>