<?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>标签: 问题解决记录 - ouuan's blog</title>
        <link>https://ouuan.moe/tag/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E8%AE%B0%E5%BD%95</link>
        <description>标签为 问题解决记录 的文章 - ouuan 的博客</description>
        <lastBuildDate>Thu, 20 Mar 2025 14:18:09 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/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E8%AE%B0%E5%BD%95/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[修复 XeTeX 更新导致编译错误]]></title>
            <link>https://ouuan.moe/post/2025/03/fix-xetex-update</link>
            <guid>https://ouuan.moe/post/2025/03/fix-xetex-update</guid>
            <pubDate>Thu, 20 Mar 2025 14:18:09 GMT</pubDate>
            <description><![CDATA[<p>毕设又咕了几周<span class="mojikumi-line-end">，</span>今天一看编译出错<span class="mojikumi-line-start">（</span></p>
]]></description>
            <content:encoded><![CDATA[<p>毕设又咕了几周<span class="mojikumi-line-end">，</span>今天一看编译出错<span class="mojikumi-line-start">（</span></p>

<section class="code-block relative my-6 shadow" 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><h2 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h2><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" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">This is XeTeX, Version 3.141592653-2.6-0.999997 (TeX Live 2025/Arch Linux) (preloaded format=xetex)</span></span>
<span><span style="color: #403f53"> restricted \write18 enabled.</span></span>
<span><span style="color: #403f53">---! /var/lib/texmf/web2c/xetex/xetex.fmt made by different executable version, strings are different</span></span>
<span><span style="color: #403f53">(Fatal format file error; I&#39;m stymied)</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">This is XeTeX, Version 3.141592653-2.6-0.999997 (TeX Live 2025/Arch Linux) (preloaded format=xetex)</span></span>
<span><span style="color: #d6deeb"> restricted \write18 enabled.</span></span>
<span><span style="color: #d6deeb">---! /var/lib/texmf/web2c/xetex/xetex.fmt made by different executable version, strings are different</span></span>
<span><span style="color: #d6deeb">(Fatal format file error; I&#39;m stymied)</span></span></samp></pre></div></section>
<h2 id="tldr" class="heading"><a href="#tldr" class="heading-anchor" aria-label="章节： tl;dr" tabindex="-1"></a><span>tl;dr</span></h2>
<p><code>sudo<wbr> <wbr>pacman<wbr> -<wbr>S<wbr> <wbr>texlive<wbr>-<wbr>xetex</code></p>
<h2 id="问-gpt" class="heading"><a href="#问-gpt" class="heading-anchor" aria-label="章节： 问 GPT" tabindex="-1"></a><span>问 GPT</span></h2>
<p>先去问了下 GPT<span class="mojikumi-line-end">，</span>它让我 <code>sudo<wbr> <wbr>rm<wbr> /<wbr>var<wbr>/<wbr>lib<wbr>/<wbr>texmf<wbr>/<wbr>web2c<wbr>/<wbr>xetex<wbr>/<wbr>xetex<wbr>.<wbr>fmt</code> 然后 <code>sudo<wbr> <wbr>fmtutil<wbr>-<wbr>sys<wbr> --<wbr>all</code> 或者 <code>sudo<wbr> <wbr>fmtutil<wbr>-<wbr>sys<wbr> --<wbr>byfmt<wbr> <wbr>xetex</code><span class="mojikumi-line-end">。</span>当然是没用的<span class="mojikumi-line-end">，</span>因为此时我没有安装 <code>texlive<wbr>-<wbr>xetex</code><span class="mojikumi-line-start">（</span></p>
<p>后来我自己发现问题了<span class="mojikumi-line-end">，</span>但如果再告诉 GPT <code>Did<wbr> <wbr>not<wbr> <wbr>find<wbr> <wbr>entry<wbr> <wbr>for<wbr> <wbr>byfmt<wbr>=<wbr>xetex<wbr> <wbr>skipped</code> 应该可以省几分钟<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>首先是在 2023 年<span class="mojikumi-line-end">，</span>Arch Linux 把 TeX Live 拆包了<span class="mojikumi-line-end">：</span><a href="https://archlinux.org/news/tex-live-package-reorganization/">TeX Live package reorganization</a><span class="mojikumi-line-end">。</span>此事在我的 <code>/<wbr>var<wbr>/<wbr>log<wbr>/<wbr>pacman<wbr>.<wbr>log</code> 中记载如下<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" 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" aria-label="plain text 代码块" data-v-c675dba6>plain text</h3><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" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">[2023-06-18T19:25:40+0800] [PACMAN] Running &#39;pacman -S texlive-binextra&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] installed texlive-binextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:48+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:48+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:40+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:40+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:42+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:42+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:45+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:15+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:30+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:31+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:31+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:37+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:37+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:40+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:40+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:43+0800] [PACMAN] Running &#39;pacman -S texlive-meta&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:29+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:40+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:40+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:43+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:53:03+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:53:03+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:14+0800] [PACMAN] Running &#39;pacman -Rns texlive-meta&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:15+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:15+0800] [ALPM] removed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:21+0800] [ALPM] removed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:22+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:46+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:46+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:28+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:28+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:30+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:30+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:33+0800] [PACMAN] Running &#39;pacman -S texlive-latexrecommended&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] installed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:43+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:43+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:46+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:46+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:48+0800] [PACMAN] Running &#39;pacman -S texlive-latexextra&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:49+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] installed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:51+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:56:31+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">[2023-06-18T19:25:40+0800] [PACMAN] Running &#39;pacman -S texlive-binextra&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] installed texlive-binextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:48+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:48+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:40+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:40+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:42+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:42+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:45+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:15+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:30+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:31+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:31+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:37+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:37+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:40+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:40+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:43+0800] [PACMAN] Running &#39;pacman -S texlive-meta&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:29+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:40+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:40+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:43+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:53:03+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:53:03+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:14+0800] [PACMAN] Running &#39;pacman -Rns texlive-meta&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:15+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:15+0800] [ALPM] removed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:21+0800] [ALPM] removed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:22+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:46+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:46+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:28+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:28+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:30+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:30+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:33+0800] [PACMAN] Running &#39;pacman -S texlive-latexrecommended&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] installed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:43+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:43+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:46+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:46+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:48+0800] [PACMAN] Running &#39;pacman -S texlive-latexextra&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:49+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] installed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:51+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:56:31+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span></samp></pre></div></section>
<p>总之<span class="mojikumi-line-end">，</span>拆包之后<span class="mojikumi-line-end">，</span>我想看看需要装什么<span class="mojikumi-line-end">。</span>发现有 <code>texlive<wbr>-<wbr>xetex</code> 就装了<span class="mojikumi-line-end">，</span>之后又换成 <code>texlive<wbr>-<wbr>meta</code><span class="mojikumi-line-end">，</span>感觉太 bloat 了又卸了<span class="mojikumi-line-start">（</span></p>
<p>之后又安装卸载过两次<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" 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" aria-label="plain text 代码块" data-v-c675dba6>plain text</h3><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" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">[2023-06-22T21:28:40+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:05+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:05+0800] [ALPM] installed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:41+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:41+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:41+0800] [ALPM] removed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">[2023-06-22T21:28:40+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:05+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:05+0800] [ALPM] installed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:41+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:41+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:41+0800] [ALPM] removed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div></section>
<section class="code-block relative my-6 shadow" 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" aria-label="plain text 代码块" data-v-c675dba6>plain text</h3><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" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">[2024-03-28T20:11:14+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:14+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:27+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:27+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:32+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] installed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:13+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:13+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:55+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:55+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:56+0800] [ALPM] removed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:57+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:57+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:57+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:59+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-29T00:31:00+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">[2024-03-28T20:11:14+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:14+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:27+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:27+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:32+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] installed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:13+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:13+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:55+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:55+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:56+0800] [ALPM] removed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:57+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:57+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:57+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:59+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:31:00+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div></section>
<p>我印象中我曾经意外发现 <code>/<wbr>usr<wbr>/<wbr>bin<wbr>/<wbr>xetex</code> 是 <code>texlive<wbr>-<wbr>bin</code> 里的<span class="mojikumi-line-end">，</span>而 <code>texlive<wbr>-<wbr>xetex</code> 里是 <code>/<wbr>usr<wbr>/<wbr>bin<wbr>/<wbr>xetex<wbr>-<wbr>unsafe</code> 和一些其他东西<span class="mojikumi-line-end">，</span>而且 <code>texlive<wbr>-<wbr>xetex</code> 卸载掉之后当时还能正常使用<span class="mojikumi-line-end">，</span>于是就卸掉了<span class="mojikumi-line-start">（</span></p>
<p>而在 <a href="https://github.com/TeX-Live/texlive-source/blob/trunk/texk/web2c/xetexdir/NEWS">texlive-source/texk/web2c/xetexdir/NEWS</a> 中可以看到 XeTeX 的版本历史<span class="mojikumi-line-end">：</span></p>
<blockquote>
<ul>
<li>XeTeX 0.999997 (7 March 2025)</li>
<li>XeTeX 0.999996 (February 2024)</li>
<li>XeTeX 0.999995 (February 2023)</li>
</ul>
</blockquote>
<p>于是我正好在 0.999996 发布的时候重新安装了一次 XeTeX<span class="mojikumi-line-end">，</span>不知道是巧合还是当时也遇到了类似的问题<span class="mojikumi-line-end">，</span>不记得了<span class="mojikumi-line-end">。</span></p>
<p><code>pacman<wbr> -<wbr>Qo<wbr> /<wbr>var<wbr>/<wbr>lib<wbr>/<wbr>texmf<wbr>/<wbr>web2c</code> 可以发现<span class="mojikumi-line-end">，</span>这个目录<span class="mojikumi-line-start">（</span>以及里面的文件<span class="mojikumi-line-end">）</span>并不属于任何包<span class="mojikumi-line-end">，</span>实际上是由 <code>72<wbr>-<wbr>texlive<wbr>-<wbr>fmtutil<wbr>.<wbr>hook</code> 生成的<span class="mojikumi-line-end">。</span>安装了 <code>texlive<wbr>-<wbr>xetex</code> 后就会生成出 <code>/<wbr>var<wbr>/<wbr>lib<wbr>/<wbr>texmf<wbr>/<wbr>web2c<wbr>/<wbr>xetex<wbr>/<wbr>xetex<wbr>.<wbr>fmt</code> 等文件<span class="mojikumi-line-end">，</span>然后即使卸载掉也可以使用 <code>xetex</code><span class="mojikumi-line-end">，</span>但不会更新<span class="mojikumi-line-end">，</span>等到需要更新就挂了<span class="mojikumi-line-end">。</span></p>
<p>所以不要随便 unbloat<span class="mojikumi-line-start">（</span>就像 <a href="https://github.com/negativa-ai/BLAFS">BLAFS</a> 那样<span class="mojikumi-line-start">（</span></p>
<p>最后让我们再来欣赏一下这个版本号<span class="mojikumi-line-start">（</span></p>
<blockquote>
<p>3.141592653-2.6-0.999997</p>
</blockquote>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/Arch%20Linux">Arch Linux</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>
        <item>
            <title><![CDATA[解决使用 profile-sync-daemon 时 Firefox 开机启动报错]]></title>
            <link>https://ouuan.moe/post/2024/05/psd-firefox-startup</link>
            <guid>https://ouuan.moe/post/2024/05/psd-firefox-startup</guid>
            <pubDate>Fri, 24 May 2024 18:31:28 GMT</pubDate>
            <description><![CDATA[
<p>为了提升性能<span class="mojikumi-line-end">，</span>更好地利用 RAM<span class="mojikumi-line-end">，</span>我一直在使用 <a href="https://github.com/graysky2/profile-sync-daemon">profile-sync-daemon</a><span class="mojikumi-line-end">，</span>也经常在开机时遇到下面这个报错<span class="mojikumi-line-end">：</span></p>
<blockquote>
<p>Firefox is already running, but is not responding. To use Firefox, you must first close the existing Firefox process, restart your device, or use a different profile.</p>
</blockquote>
<p>之前都是把弹窗关掉手动重启一下<span class="mojikumi-line-end">，</span>最近终于去研究了一下把它修了<span class="mojikumi-line-end">。</span></p>
]]></description>
            <content:encoded><![CDATA[
<p>为了提升性能<span class="mojikumi-line-end">，</span>更好地利用 RAM<span class="mojikumi-line-end">，</span>我一直在使用 <a href="https://github.com/graysky2/profile-sync-daemon">profile-sync-daemon</a><span class="mojikumi-line-end">，</span>也经常在开机时遇到下面这个报错<span class="mojikumi-line-end">：</span></p>
<blockquote>
<p>Firefox is already running, but is not responding. To use Firefox, you must first close the existing Firefox process, restart your device, or use a different profile.</p>
</blockquote>
<p>之前都是把弹窗关掉手动重启一下<span class="mojikumi-line-end">，</span>最近终于去研究了一下把它修了<span class="mojikumi-line-end">。</span></p>

<h2 id="profile-sync-daemon" class="heading"><a href="#profile-sync-daemon" class="heading-anchor" aria-label="章节： profile-sync-daemon" tabindex="-1"></a><span>profile-sync-daemon</span></h2>
<p><a href="https://github.com/graysky2/profile-sync-daemon">profile-sync-daemon</a> 就是在启动时把 browser profile 从硬盘复制到内存盘<span class="mojikumi-line-end">，</span>然后创建 symlink 到内存盘<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>降低硬盘损耗<span class="mojikumi-line-end">。</span></p>
<p>总之如果内存用不完的话<span class="mojikumi-line-end">，</span>用这个东西看起来不亏<span class="mojikumi-line-start">（</span>其实我一开始就是因为有 32G 内存用不完去搜了一下如何利用内存才知道有这个工具<span class="mojikumi-line-start">（</span></p>
<h2 id="探寻报错原因" class="heading"><a href="#探寻报错原因" class="heading-anchor" aria-label="章节： 探寻报错原因" tabindex="-1"></a><span>探寻报错原因</span></h2>
<p>在用了 profile-sync-daemon 后<span class="mojikumi-line-end">，</span>在开机时我经常遇到下面这个报错<span class="mojikumi-line-end">：</span></p>
<p><picture><img type="image/webp" srcset="/assets/firefox-already-running.a013edd1.webp" loading="lazy" src="/assets/firefox-already-running.a013edd1.webp" width="441" height="176" alt="弹窗：Firefox is already running, but is not responding. To use Firefox, you must first close the existing Firefox process, restart your device, or use a different profile."></picture></p>
<p>单次处理这个问题非常简单<span class="mojikumi-line-end">，</span>关掉弹窗重启 Firefox 即可<span class="mojikumi-line-end">。</span>但每次都遇到还是很烦<span class="mojikumi-line-end">，</span>时间久了我还是去研究了一下<span class="mojikumi-line-end">。</span></p>
<p>根据错误提示以及搜索结果<span class="mojikumi-line-end">，</span>刚开机时又肯定不会有其他 Firefox 进程在跑<span class="mojikumi-line-end">，</span>我一开始主要怀疑是 profile-sync-daemon 在关机前备份时出了问题<span class="mojikumi-line-end">，</span>导致有 lock 之类的没有释放掉就备份了<span class="mojikumi-line-end">。</span></p>
<p>由于我手动处理的时候都是重启一下 Firefox<span class="mojikumi-line-end">，</span>所以我尝试修复的时候一开始先是写了个脚本自动重启 Firefox<span class="mojikumi-line-end">，</span>发现直接重启不行<span class="mojikumi-line-end">，</span>又尝试用 <code>xdotool</code> / <code>wmctrl</code> 等待报错弹窗出现后再重启<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>要多等待一会儿<span class="mojikumi-line-end">。</span></p>
<p>于是我去观察了一下刚开机时 profile 的状态<span class="mojikumi-line-end">，</span>终于发现了问题<span class="mojikumi-line-end">。</span>刚开机时 profile directory 会被设为到 <code>/dev/null</code> 的 symlink<span class="mojikumi-line-end">，</span>而在整个 profile 都复制到内存盘后才会替换为正确的 symlink<span class="mojikumi-line-end">，</span>我的 profile 比较大<span class="mojikumi-line-start">（</span>3GB<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>就需要好几秒<span class="mojikumi-line-end">。</span>只不过 Firefox 给的错误提示非常具有误导性<span class="mojikumi-line-end">，</span>它其实是无法从 <code>/dev/null</code> 正常读取 profile<span class="mojikumi-line-end">，</span>这和 <span class="mojikumi">“</span>already running<span class="mojikumi">”</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>我的解决方案是写了个启动脚本<span class="mojikumi-line-end">，</span>等待 profile directory 变成正确的 symlink 再启动 Firefox<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="Shell 代码块" data-v-c675dba6>Shell</h3><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: #989FB1">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #989FB1"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #4876D6">set</span><span style="color: #403F53"> </span><span style="color: #4876D6">-euo</span><span style="color: #403F53"> </span><span style="color: #4876D6">pipefail</span></span>
<span></span>
<span><span style="color: #994CC3">while</span><span style="color: #403F53"> [[ </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(readlink -n ~/.mozilla/firefox/</span><span style="color: #0C969B">*</span><span style="color: #4876D6">.default-release)</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #994CC3">==</span><span style="color: #403F53"> /dev/null ]]; </span><span style="color: #994CC3">do</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">sleep</span><span style="color: #403F53"> </span><span style="color: #AA0982">1</span></span>
<span><span style="color: #994CC3">done</span></span>
<span></span>
<span><span style="color: #4876D6">firefox</span><span style="color: #403F53"> &amp;</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: #637777"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #C5E478">set</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-euo</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">pipefail</span></span>
<span></span>
<span><span style="color: #C792EA">while</span><span style="color: #D6DEEB"> [[ </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">readlink</span><span style="color: #ECC48D"> </span><span style="color: #82AAFF">-n</span><span style="color: #ECC48D"> ~/.mozilla/firefox/</span><span style="color: #7FDBCA">*</span><span style="color: #ECC48D">.default-release)</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">==</span><span style="color: #D6DEEB"> /dev/null ]]; </span><span style="color: #C792EA">do</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">sleep</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">1</span></span>
<span><span style="color: #C792EA">done</span></span>
<span></span>
<span><span style="color: #82AAFF">firefox</span><span style="color: #D6DEEB"> &amp;</span></span></code></pre></div></section>
<p>然后根据 Copilot 的建议改成了非轮询<span class="mojikumi-line-end">，</span>使用 <code>inotifywait</code><span class="mojikumi-line-start">（</span>意义不大<span class="mojikumi-line-end">，</span>主要是学多<span class="mojikumi-line-start">（</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="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: #989FB1">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #989FB1"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #4876D6">set</span><span style="color: #403F53"> </span><span style="color: #4876D6">-euo</span><span style="color: #403F53"> </span><span style="color: #4876D6">pipefail</span></span>
<span></span>
<span><span style="color: #4876D6">profile</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(ls -d ~/.mozilla/firefox/</span><span style="color: #0C969B">*</span><span style="color: #4876D6">.default-release)</span><span style="color: #111111">&quot;</span></span>
<span></span>
<span><span style="color: #994CC3">while</span><span style="color: #403F53"> [[ </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(readlink -n </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$profile</span><span style="color: #111111">&quot;</span><span style="color: #4876D6">)</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #994CC3">==</span><span style="color: #403F53"> /dev/null ]]; </span><span style="color: #994CC3">do</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">inotifywait</span><span style="color: #403F53"> </span><span style="color: #4876D6">-P</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$profile</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">done</span></span>
<span></span>
<span><span style="color: #4876D6">firefox</span><span style="color: #403F53"> &amp;</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: #637777"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #C5E478">set</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-euo</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">pipefail</span></span>
<span></span>
<span><span style="color: #C5E478">profile</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">ls</span><span style="color: #ECC48D"> </span><span style="color: #82AAFF">-d</span><span style="color: #ECC48D"> ~/.mozilla/firefox/</span><span style="color: #7FDBCA">*</span><span style="color: #ECC48D">.default-release)</span><span style="color: #D9F5DD">&quot;</span></span>
<span></span>
<span><span style="color: #C792EA">while</span><span style="color: #D6DEEB"> [[ </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">readlink</span><span style="color: #ECC48D"> </span><span style="color: #82AAFF">-n</span><span style="color: #ECC48D"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$profile</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">)</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">==</span><span style="color: #D6DEEB"> /dev/null ]]; </span><span style="color: #C792EA">do</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">inotifywait</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-P</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$profile</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">done</span></span>
<span></span>
<span><span style="color: #82AAFF">firefox</span><span style="color: #D6DEEB"> &amp;</span></span></code></pre></div></section>
<p>我是开机时有一个启动脚本启动一堆东西<span class="mojikumi-line-end">，</span>在那里面调用这个 Firefox 启动脚本<span class="mojikumi">。</span><wbr><span class="mojikumi-line-start">（</span>如果是手动启动可以写个 <code>~/.<wbr>local<wbr>/<wbr>share<wbr>/<wbr>applications<wbr>/<wbr>firefox<wbr>.<wbr>desktop</code><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>后来去搜了一下<span class="mojikumi-line-end">，</span>发现这个误导性的报错历史悠久<span class="mojikumi-line-end">，</span>20 年前 profile directory 不存在就会报这个<span class="mojikumi-line-end">：</span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=278860">Bugzilla #278860 - confusing "profile in use"/"already running" error when profile is missing (not found)</a><span class="mojikumi-line-end">。</span>后来路径不存在的情况修了<span class="mojikumi-line-end">，</span>但 read-only 等 permission error 还是没修<span class="mojikumi-line-end">：</span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=381139">Bugzilla #381139 - Need different warning for profile RO, in use and missing……</a><span class="mojikumi-line-end">。</span></p>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/firefox">firefox</category>
            <category domain="https://ouuan.moe/tag/Arch%20Linux">Arch Linux</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>
        <item>
            <title><![CDATA[String.prototype.replace 与隐藏的“$”]]></title>
            <link>https://ouuan.moe/post/2023/01/string-prototype-replace</link>
            <guid>https://ouuan.moe/post/2023/01/string-prototype-replace</guid>
            <pubDate>Sun, 29 Jan 2023 12:16:32 GMT</pubDate>
            <description><![CDATA[<p>tl;dr: <code>replace</code> 的第二个参数应当使用字面量或函数<span class="mojikumi-line-end">，</span>不应使用带变量的字符串表达式<span class="mojikumi-line-end">，</span>否则可能发生意想不到的错误替换<span class="mojikumi-line-end">。</span></p>
]]></description>
            <content:encoded><![CDATA[<p>tl;dr: <code>replace</code> 的第二个参数应当使用字面量或函数<span class="mojikumi-line-end">，</span>不应使用带变量的字符串表达式<span class="mojikumi-line-end">，</span>否则可能发生意想不到的错误替换<span class="mojikumi-line-end">。</span></p>

<h2 id="string-prototype-replace-的第二个参数" class="heading"><a href="#string-prototype-replace-的第二个参数" class="heading-anchor" aria-label="章节： String.prototype.replace 的第二个参数" tabindex="-1"></a><span>String.prototype.replace 的第二个参数</span></h2>
<p>(reference: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_function_as_the_replacement"><code>String<wbr>.<wbr>prototype<wbr>.<wbr>replace<wbr>()</code> - JavaScript | MDN</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><h3 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="JavaScript 代码块" data-v-c675dba6>JavaScript</h3><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: #4876D6">replace</span><span style="color: #403F53">(pattern, replacement);</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">replace</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">pattern</span><span style="color: #D6DEEB">, </span><span style="color: #D7DBE0">replacement</span><span style="color: #D6DEEB">);</span></span></code></pre></div></section>
<p>第二个参数 <code>replacement</code> 可以是字符串或函数<span class="mojikumi-line-end">，</span>如果是函数<span class="mojikumi-line-end">，</span>则由匹配信息作为参数计算出 replacement<span class="mojikumi-line-end">，</span>如果是字符串<span class="mojikumi-line-end">，</span>则可以使用一些 special replacement pattern<span class="mojikumi-line-end">：</span></p>
<div class="overflow-auto my-6"><table>
<thead>
<tr>
<th align="center">Pattern</th>
<th align="center">Inserts</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><code>$$</code></td>
<td align="center">Inserts a <code>"$"</code>.</td>
</tr>
<tr>
<td align="center"><code>$&#x26;</code></td>
<td align="center">Inserts the matched substring.</td>
</tr>
<tr>
<td align="center"><code>$`</code></td>
<td align="center">Inserts the portion of the string that precedes the matched substring.</td>
</tr>
<tr>
<td align="center"><code>$'</code></td>
<td align="center">Inserts the portion of the string that follows the matched substring.</td>
</tr>
<tr>
<td align="center"><code>$n</code></td>
<td align="center">Inserts the <code>n</code>th (1-indexed) capturing group where <code>n</code> is a positive integer less than 100.</td>
</tr>
<tr>
<td align="center"><code class="important-whitespace-nowrap">$&lt;Name&gt;</code></td>
<td align="center">Inserts the named capturing group where <code>Name</code> is the group name.</td>
</tr>
</tbody>
</table></div>
<h2 id="使用变量作为-replacement-带来的问题" class="heading"><a href="#使用变量作为-replacement-带来的问题" class="heading-anchor" aria-label="章节： 使用变量作为 replacement 带来的问题" tabindex="-1"></a><span>使用变量作为 replacement 带来的问题</span></h2>
<p>我实际遇到的问题是 <a href="https://github.com/ElMassimo/iles/issues/224">iles#224</a><span class="mojikumi-line-end">，</span>由于使用了模板字符串作为 replacement<span class="mojikumi-line-end">，</span>在变量中包含上面这些 special replacement pattern 时<span class="mojikumi-line-end">，</span>就会错误地替换<span class="mojikumi-line-end">。</span></p>
<p>解决方法也很简单<span class="mojikumi-line-end">，</span>将含变量的表达式改成函数<span class="mojikumi-line-start">（</span>前面加上 <code>() => </code><span class="mojikumi-line-end">）</span>就可以了<span class="mojikumi-line-end">：</span><a href="https://stackoverflow.com/questions/28102491/javascript-better-way-to-escape-dollar-signs-in-the-string-used-by-string-prot">regex - javascript - Better Way to Escape Dollar Signs in the String Used By <code>String<wbr>.<wbr>prototype<wbr>.<wbr>replace</code> - Stack Overflow</a><span class="mojikumi-line-end">。</span></p>
<p>因为解决的代价非常小<span class="mojikumi-line-end">，</span>虽然有的时候根据代码逻辑可以推断出 replacement 不含 <code>$</code><span class="mojikumi-line-end">，</span>依然可以认为<span class="mojikumi-line-end">，</span>凡是 replacement 需要用到变量的<span class="mojikumi-line-end">，</span>都应当替换成函数<span class="mojikumi-line-end">。</span></p>
<h2 id="使用-eslint-检测这一问题" class="heading"><a href="#使用-eslint-检测这一问题" class="heading-anchor" aria-label="章节： 使用 ESLint 检测这一问题" tabindex="-1"></a><span>使用 ESLint 检测这一问题</span></h2>
<p><a href="https://github.com/ouuan/eslint-config/commit/166e332dbdf8dc2ab9ff918302ada13fbd487ead">写了个</a> <a href="https://eslint.org/docs/latest/rules/no-restricted-syntax"><code>no<wbr>-<wbr>restricted<wbr>-<wbr>syntax</code></a> 的配置<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="JavaScript 代码块" data-v-c675dba6>JavaScript</h3><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: #403F53">{</span></span>
<span><span style="color: #403F53">  rules: {</span></span>
<span><span style="color: #403F53">    </span><span style="color: #111111">&#39;</span><span style="color: #C96765">no-restricted-syntax</span><span style="color: #111111">&#39;</span><span style="color: #403F53">: [</span></span>
<span><span style="color: #403F53">      </span><span style="color: #111111">&#39;</span><span style="color: #C96765">error</span><span style="color: #111111">&#39;</span><span style="color: #403F53">,</span></span>
<span><span style="color: #403F53">      {</span></span>
<span><span style="color: #403F53">        selector: </span><span style="color: #111111">&quot;</span><span style="color: #C96765">CallExpression[callee.property.name=&#39;replace&#39;] &gt; .arguments:nth-child(2):not(Literal):not(ArrowFunctionExpression):not(FunctionExpression)</span><span style="color: #111111">&quot;</span><span style="color: #403F53">,</span></span>
<span><span style="color: #403F53">        message: </span><span style="color: #111111">&#39;</span><span style="color: #C96765">Only literals and functions are permitted as the 2nd argument of String.prototype.replace. Use a function that returns the expression instead.</span><span style="color: #111111">&#39;</span><span style="color: #403F53">,</span></span>
<span><span style="color: #403F53">      },</span></span>
<span><span style="color: #403F53">    ],</span></span>
<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: #D6DEEB">{</span></span>
<span><span style="color: #D6DEEB">  rules: {</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">no-restricted-syntax</span><span style="color: #D9F5DD">&#39;</span><span style="color: #D6DEEB">: [</span></span>
<span><span style="color: #D6DEEB">      </span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">error</span><span style="color: #D9F5DD">&#39;</span><span style="color: #D6DEEB">,</span></span>
<span><span style="color: #D6DEEB">      {</span></span>
<span><span style="color: #D6DEEB">        selector: </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">CallExpression[callee.property.name=&#39;replace&#39;] &gt; .arguments:nth-child(2):not(Literal):not(ArrowFunctionExpression):not(FunctionExpression)</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">,</span></span>
<span><span style="color: #D6DEEB">        message: </span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">Only literals and functions are permitted as the 2nd argument of String.prototype.replace. Use a function that returns the expression instead.</span><span style="color: #D9F5DD">&#39;</span><span style="color: #D6DEEB">,</span></span>
<span><span style="color: #D6DEEB">      },</span></span>
<span><span style="color: #D6DEEB">    ],</span></span>
<span><span style="color: #D6DEEB">  },</span></span>
<span><span style="color: #D6DEEB">}</span></span></code></pre></div></section>
<p>因为只是分析 AST<span class="mojikumi-line-end">，</span>有很多情况会误报<span class="mojikumi-line-end">，</span>例如 replacement 是一个函数名<span class="mojikumi-line-end">，</span>但实际代码应该很少出现这样的情况<span class="mojikumi-line-end">，</span>真遇到了的话再套一层函数就 ok 了<span class="mojikumi-line-end">，</span>实在不行还能用注释 disable 掉 lint<span class="mojikumi-line-end">。</span></p>
<p>没研究过<span class="mojikumi-line-end">，</span>不知道写 ESLint plugin 能不能更加准确地检测<span class="mojikumi-line-end">，</span><s>但是差不多得了</s><span class="mojikumi-line-start">（</span></p>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/JavaScript">JavaScript</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>
        <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-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: #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-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: #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-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: #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-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: #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-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: #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-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: #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-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: #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-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: #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-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">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-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">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-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: #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-20"><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-20--></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-21"><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-21--></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-22"><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-22--></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-23"><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-23--></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-24"><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-24--></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-25"><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-25--></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-26"><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-26--></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-27"><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-27--></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>
        <item>
            <title><![CDATA[busuanzi 访问量统计与 live2d 插件同时使用导致 busuanzi 不显示的根本原因以及解决方法]]></title>
            <link>https://ouuan.moe/post/2022/08/busuanzi-and-live2d</link>
            <guid>https://ouuan.moe/post/2022/08/busuanzi-and-live2d</guid>
            <pubDate>Fri, 05 Aug 2022 05:55:15 GMT</pubDate>
            <description><![CDATA[<p>昨天在一位网友的 Hexo 博客遇到了很诡异的 busuanzi 访问量统计不显示问题<span class="mojikumi-line-end">，</span>经过一番研究发现是 busuanzi 代码的一处问题和 live2d 插件的一处问题凑在一起导致的<span class="mojikumi-line-end">。</span></p>
<p>今天在写博客之前先搜了一下 <span class="mojikumi">“</span>busuanzi live2d<span class="mojikumi">”</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>而且修复方法基本上都是删 feature 或者换组件<span class="mojikumi-line-end">，</span>但实际上只要知道问题的根本原因就可以在不妨碍正常功能运作的前提下进行修复<span class="mojikumi-line-end">。</span>所以昨天晚上没白忙活<span class="mojikumi-line-end">，</span>我这篇博客还是要写的<span class="mojikumi-line-end">。</span></p>
]]></description>
            <content:encoded><![CDATA[<p>昨天在一位网友的 Hexo 博客遇到了很诡异的 busuanzi 访问量统计不显示问题<span class="mojikumi-line-end">，</span>经过一番研究发现是 busuanzi 代码的一处问题和 live2d 插件的一处问题凑在一起导致的<span class="mojikumi-line-end">。</span></p>
<p>今天在写博客之前先搜了一下 <span class="mojikumi">“</span>busuanzi live2d<span class="mojikumi">”</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>而且修复方法基本上都是删 feature 或者换组件<span class="mojikumi-line-end">，</span>但实际上只要知道问题的根本原因就可以在不妨碍正常功能运作的前提下进行修复<span class="mojikumi-line-end">。</span>所以昨天晚上没白忙活<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>我这篇文章说不定也不会被搜到<span class="mojikumi-line-end">，</span>只不过既然第一页没有<span class="mojikumi-line-end">，</span>就让我也来成为被搜索引擎埋没的一员<span class="mojikumi-line-end">，</span>这样的话说不定被搜到的可能性就增加了<span class="mojikumi-line-start">（</span></p>
<h2 id="问题描述" class="heading"><a href="#问题描述" class="heading-anchor" aria-label="章节： 问题描述" tabindex="-1"></a><span>问题描述</span></h2>
<p>在一个同时启用了 busuanzi 访问量统计和 live2d 插件的 Hexo 博客里<span class="mojikumi-line-end">，</span>访问或刷新博客时有大概率 busuanzi 会被隐藏<span class="mojikumi-line-end">。</span></p>
<p>被隐藏的具体表现为<span class="mojikumi-line-end">，</span>刷新的瞬间 id 为 <code>busuanzi_<wbr>container_<wbr>*</code> 的容器是显示的<span class="mojikumi-line-end">，</span>然后容器的样式很快被设为 <code>display: none</code><span class="mojikumi-line-end">。</span></p>
<p>查看 F12 的 Network<span class="mojikumi-line-end">，</span>busuanzi 相关请求正常返回<span class="mojikumi-line-end">；</span>console 中没有报错<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>注<span class="mojikumi-line-end">：</span>这个过程中我也走了一些弯路<span class="mojikumi-line-end">，</span>就不写出来了<span class="mojikumi-line-end">。</span></p>
<h3 id="设置-display-none-的定位" class="heading"><a href="#设置-display-none-的定位" class="heading-anchor" aria-label="章节： 设置 display: none 的定位" tabindex="-1"></a><span>设置 <code>display: none</code> 的定位</span></h3>
<p>查看 <a href="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js">busuanzi.pure.mini.js</a><span class="mojikumi-line-end">，</span>发现 <code>display: none</code> 在 <code>hides</code> 函数中被设置<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="JavaScript 代码块" data-v-c675dba6>JavaScript</h4><ile-root id="ile-28"><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-28--></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">hides: </span><span style="color: #994CC3">function</span><span style="color: #111111">()</span><span style="color: #403F53"> {</span></span>
<span><span style="color: #403F53">  </span><span style="color: #0C969B">this</span><span style="color: #994CC3">.</span><span style="color: #111111">bszs</span><span style="color: #994CC3">.</span><span style="color: #4876D6">map</span><span style="color: #403F53">(</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">a</span><span style="color: #111111">)</span><span style="color: #403F53"> {</span></span>
<span><span style="color: #403F53">    </span><span style="color: #994CC3">var </span><span style="color: #403F53">b</span><span style="color: #994CC3"> = </span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">getElementById</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">busuanzi_container_</span><span style="color: #111111">&quot;</span><span style="color: #994CC3"> + </span><span style="color: #403F53">a);</span></span>
<span><span style="color: #403F53">    b </span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53"> (</span><span style="color: #0C969B">b</span><span style="color: #994CC3">.</span><span style="color: #111111">style</span><span style="color: #994CC3">.</span><span style="color: #0C969B">display</span><span style="color: #403F53"> </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #C96765">none</span><span style="color: #111111">&quot;</span><span style="color: #403F53">)</span></span>
<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: #D6DEEB">hides: </span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB"> {</span></span>
<span><span style="color: #D6DEEB">  </span><span style="color: #7FDBCA">this</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">bszs</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">map</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">a</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB"> {</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C792EA">var </span><span style="color: #D7DBE0">b</span><span style="color: #C792EA"> = </span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">getElementById</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">busuanzi_container_</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA"> + </span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">);</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB"> (</span><span style="color: #7FDBCA">b</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">style</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">display</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">none</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">  })</span></span>
<span><span style="color: #D6DEEB">},</span></span></code></pre></div></section>
<p>而 hides 函数仅在一处被调用<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="JavaScript 代码块" data-v-c675dba6>JavaScript</h4><ile-root id="ile-29"><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-29--></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">try</span><span style="color: #403F53"> {</span></span>
<span><span style="color: #403F53">  </span><span style="color: #4876D6">a</span><span style="color: #403F53">(b), </span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #111111">parentElement</span><span style="color: #994CC3">.</span><span style="color: #4876D6">removeChild</span><span style="color: #403F53">(scriptTag)</span></span>
<span><span style="color: #403F53">} </span><span style="color: #994CC3">catch</span><span style="color: #403F53"> (c) {</span></span>
<span><span style="color: #403F53">  </span><span style="color: #0C969B">bszTag</span><span style="color: #994CC3">.</span><span style="color: #4876D6">hides</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">try</span><span style="color: #D6DEEB"> {</span></span>
<span><span style="color: #D6DEEB">  </span><span style="color: #82AAFF">a</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB">), </span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">parentElement</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">removeChild</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">scriptTag</span><span style="color: #D6DEEB">)</span></span>
<span><span style="color: #D6DEEB">} </span><span style="color: #C792EA">catch</span><span style="color: #D6DEEB"> (</span><span style="color: #D7DBE0">c</span><span style="color: #D6DEEB">) {</span></span>
<span><span style="color: #D6DEEB">  </span><span style="color: #7FDBCA">bszTag</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">hides</span><span style="color: #D6DEEB">()</span></span>
<span><span style="color: #D6DEEB">}</span></span></code></pre></div></section>
<p>所以是在 <code>a<wbr>(<wbr>b<wbr>), <wbr>scriptTag<wbr>.<wbr>parentElement<wbr>.<wbr>removeChild<wbr>(<wbr>scriptTag<wbr>)</code> 抛出异常时容器被隐藏<span class="mojikumi-line-end">。</span></p>
<h3 id="异常原因的定位" class="heading"><a href="#异常原因的定位" class="heading-anchor" aria-label="章节： 异常原因的定位" tabindex="-1"></a><span>异常原因的定位</span></h3>
<p>由于在其它地方的 busuanzi 不会出现这一问题<span class="mojikumi-line-end">，</span>而问题的原因还完全不清楚<span class="mojikumi-line-end">，</span>为了尽可能还原原始环境以复现问题<span class="mojikumi-line-end">，</span>我选择了使用 <a href="https://addons.mozilla.org/zh-CN/firefox/addon/header-editor/">Firefox 的 Header Editor 插件</a> 直接在原博客进行测试<span class="mojikumi-line-end">。</span>具体来说<span class="mojikumi-line-end">，</span>就是在本地复制一份 busuanzi 的代码<span class="mojikumi-line-end">，</span>然后跑一个 http server<span class="mojikumi-line-end">，</span>在 Header Editor 里把 busuanzi 代码的请求重定向到本地的 http server<span class="mojikumi-line-end">。</span></p>
<p>首先<span class="mojikumi-line-end">，</span>在 <code>catch</code> 中添加 <code>console<wbr>.<wbr>error<wbr>(<wbr>c<wbr>)</code><span class="mojikumi-line-end">，</span>得到错误内容 <code>TypeError<wbr>: <wbr>scriptTag<wbr>.<wbr>parentElement<wbr> <wbr>is<wbr> <wbr>null</code><span class="mojikumi-line-end">。</span></p>
<p>查看代码中 <code>scriptTag</code> 相关的部分<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="JavaScript 代码块" data-v-c675dba6>JavaScript</h4><ile-root id="ile-30"><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-30--></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">scriptTag </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">createElement</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">SCRIPT</span><span style="color: #111111">&quot;</span><span style="color: #403F53">), </span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">type</span><span style="color: #403F53"> </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #C96765">text/javascript</span><span style="color: #111111">&quot;</span><span style="color: #403F53">, </span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">defer</span><span style="color: #403F53"> </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #994CC3">!</span><span style="color: #AA0982">0</span><span style="color: #403F53">, </span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">src</span><span style="color: #403F53"> </span><span style="color: #994CC3">=</span><span style="color: #403F53"> a, </span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">referrerPolicy</span><span style="color: #403F53"> </span><span style="color: #994CC3">=</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #C96765">no-referrer-when-downgrade</span><span style="color: #111111">&quot;</span><span style="color: #403F53">, </span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">getElementsByTagName</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">HEAD</span><span style="color: #111111">&quot;</span><span style="color: #403F53">)[</span><span style="color: #AA0982">0</span><span style="color: #403F53">]</span><span style="color: #994CC3">.</span><span style="color: #4876D6">appendChild</span><span style="color: #403F53">(scriptTag)</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: #D7DBE0">scriptTag</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">createElement</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">SCRIPT</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">), </span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">type</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">text/javascript</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">, </span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">defer</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">!</span><span style="color: #F78C6C">0</span><span style="color: #D6DEEB">, </span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">src</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">, </span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">referrerPolicy</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">=</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">no-referrer-when-downgrade</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">, </span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">getElementsByTagName</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">HEAD</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">)[</span><span style="color: #F78C6C">0</span><span style="color: #D6DEEB">]</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">appendChild</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">scriptTag</span><span style="color: #D6DEEB">)</span></span></code></pre></div></section>
<p>所以<span class="mojikumi-line-end">，</span>再在 <code>catch</code> 中添加 <code class="break-all">s = document.querySelector("[src*=BusuanziCallback]"); console.log(s.parentElement);</code><span class="mojikumi-line-end">，</span>发现 <code>s<wbr>.<wbr>parentElement</code> 不是 <code>null</code><span class="mojikumi-line-end">。</span></p>
<p>再添加 <code>console<wbr>.<wbr>log<wbr>(<wbr>s<wbr> === <wbr>scriptTag<wbr>)</code><span class="mojikumi-line-end">，</span>发现结果是 <code>s</code> 和 <code>scriptTag</code> 不同<span class="mojikumi-line-end">，</span>所以原因在于此时的 <code>scriptTag</code> 变量已经不指向 DOM 中的这个元素了<span class="mojikumi-line-end">。</span></p>
<h3 id="定位到-live2d-插件" class="heading"><a href="#定位到-live2d-插件" class="heading-anchor" aria-label="章节： 定位到 live2d 插件" tabindex="-1"></a><span>定位到 live2d 插件</span></h3>
<p>此时我原本是没有任何头绪的<span class="mojikumi-line-end">，</span>但我发现<span class="mojikumi-line-end">，</span>并不是每次刷新页面都会触发这一问题<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>有一串 console 输出<span class="mojikumi-line-end">，</span>在出现问题时总位于我在 <code>catch</code> 中添加的调试信息之前<span class="mojikumi-line-end">，</span>而在没出现问题时则位于调试信息之后<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" 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" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-31"><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-31--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">Live2D 2.1.00_1 live2d.core.js:5925:16</span></span>
<span><span style="color: #403f53">profile : Desktop live2d.core.js:5913:16</span></span>
<span><span style="color: #403f53">  [PROFILE_NAME] = Desktop live2d.core.js:5918:20</span></span>
<span><span style="color: #403f53">  [USE_ADJUST_TRANSLATION] = false live2d.core.js:5918:20</span></span>
<span><span style="color: #403f53">  [USE_CACHED_POLYGON_IMAGE] = false live2d.core.js:5918:20</span></span>
<span><span style="color: #403f53">  [EXPAND_W] = 2</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">Live2D 2.1.00_1 live2d.core.js:5925:16</span></span>
<span><span style="color: #d6deeb">profile : Desktop live2d.core.js:5913:16</span></span>
<span><span style="color: #d6deeb">  [PROFILE_NAME] = Desktop live2d.core.js:5918:20</span></span>
<span><span style="color: #d6deeb">  [USE_ADJUST_TRANSLATION] = false live2d.core.js:5918:20</span></span>
<span><span style="color: #d6deeb">  [USE_CACHED_POLYGON_IMAGE] = false live2d.core.js:5918:20</span></span>
<span><span style="color: #d6deeb">  [EXPAND_W] = 2</span></span></samp></pre></div></section>
<p>多亏了 live2d 的这串输出<span class="mojikumi-line-end">，</span>我得以将问题定位到 live2d 插件上<span class="mojikumi-line-end">。</span></p>
<p>实际上<span class="mojikumi-line-end">，</span>如果没有这些 console 输出<span class="mojikumi-line-end">，</span>也可以通过 <code>&#x3C;head></code> 中 <code>L2Dwidget<wbr>.<wbr>0<wbr>.<wbr>min<wbr>.<wbr>js</code> 和 <code class="break-all">busuanzi?jsonpCallback=BusuanziCallback</code> 两个 <code>&#x3C;script></code> 的相对位置发现问题<span class="mojikumi-line-end">，</span>只不过这样的话就更隐蔽更难发现了<span class="mojikumi-line-end">。</span></p>
<h3 id="在-live2d-插件中定位问题" class="heading"><a href="#在-live2d-插件中定位问题" class="heading-anchor" aria-label="章节： 在 live2d 插件中定位问题" tabindex="-1"></a><span>在 live2d 插件中定位问题</span></h3>
<p>在 <code>L2Dwidget<wbr>.<wbr>min<wbr>.<wbr>js</code> 的第一行有源码地址以及时间<span class="mojikumi-line-end">：</span><code>/*! <wbr>https<wbr>://<wbr>github<wbr>.<wbr>com<wbr>/<wbr>xiazeyu<wbr>/<wbr>live2d<wbr>-<wbr>widget<wbr>.<wbr>js<wbr> <wbr>built<wbr>@<wbr>2019<wbr>-<wbr>4<wbr>-<wbr>6<wbr> <wbr>09<wbr>:<wbr>38<wbr>:<wbr>17<wbr> */</code></p>
<p>因为注释中给出的时间不是最新版本<span class="mojikumi-line-end">，</span>先查看 git log 并 checkout 到相应时间的版本<span class="mojikumi-line-end">。</span></p>
<p>既然问题在于 <code>&#x3C;script></code> 元素被重新创建而导致原变量不指向 DOM 中元素<span class="mojikumi-line-end">，</span>就在代码中 grep <code>head</code><span class="mojikumi-line-end">，</span>然后发现 <a href="https://github.com/xiazeyu/live2d-widget.js/blob/fa8f2d831a1a9e96cd85bd1ef593a3336aeac720/src/dialog/index.js#L4-L38">问题代码</a><span class="mojikumi-line-end">：</span><code>document<wbr>.<wbr>head<wbr>.<wbr>innerHTML<wbr> += ……</code></p>
<p>至此<span class="mojikumi-line-end">，</span>问题原因已发现<span class="mojikumi-line-end">，</span>就是 live2d 插件通过修改 <code>document<wbr>.<wbr>head<wbr>.<wbr>innerHTML</code> 来添加样式<span class="mojikumi-line-end">，</span>导致 busuanzi 的 <code>scriptTag</code> 变量指向的不再是 DOM 中的 <code>&#x3C;script></code> 元素<span class="mojikumi-line-end">。</span></p>
<p>实际上<span class="mojikumi-line-end">，</span>live2d 插件的这一问题 <a href="https://github.com/xiazeyu/live2d-widget.js/pull/61">已经修复</a><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>
<h3 id="修改-busuanzi-的解决方法" class="heading"><a href="#修改-busuanzi-的解决方法" class="heading-anchor" aria-label="章节： 修改 busuanzi 的解决方法" tabindex="-1"></a><span>修改 busuanzi 的解决方法</span></h3>
<p>因为 busuanzi 的代码较短<span class="mojikumi-line-end">，</span>而且本来就是用的外部的代码<span class="mojikumi-line-end">，</span>改起来比较容易<span class="mojikumi-line-end">。</span></p>
<p>把 <code>scriptTag<wbr>.<wbr>parentElement<wbr>.<wbr>removeChild<wbr>(<wbr>scriptTag<wbr>)</code> 修改为 <code class="break-all">s=document.querySelector('[src*=BusuanziCallback]'),s.parentElement.removeChild(s)</code> 即可<span class="mojikumi-line-end">。</span>可以把修改后的静态文件放在博客里<span class="mojikumi-line-end">，</span>然后修改 busuanzi <code>&#x3C;script></code> 的 <code>src</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><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>相关代码</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><p>修改后的 busuanzi 代码<span class="mojikumi-line-start">（</span>还在 <code>catch</code> 里加了个 <code>console<wbr>.<wbr>error</code><span class="mojikumi">）</span><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><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="JavaScript 代码块" data-v-c675dba6>JavaScript</h5><ile-root id="ile-32"><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-32--></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">var </span><span style="color: #403F53">bszCaller</span><span style="color: #994CC3">,</span><span style="color: #403F53">bszTag;</span><span style="color: #994CC3">!function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #994CC3">var </span><span style="color: #403F53">c</span><span style="color: #5F7E97">,</span><span style="color: #403F53">d</span><span style="color: #5F7E97">,</span><span style="color: #403F53">e</span><span style="color: #5F7E97">,</span><span style="color: #403F53">a</span><span style="color: #994CC3">=!</span><span style="color: #AA0982">1</span><span style="color: #5F7E97">,</span><span style="color: #403F53">b</span><span style="color: #994CC3">=</span><span style="color: #403F53">[];</span><span style="color: #4876D6">ready</span><span style="color: #994CC3">=function</span><span style="color: #111111">(</span><span style="color: #403F53">c</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #994CC3">return</span><span style="color: #403F53"> a</span><span style="color: #994CC3">||</span><span style="color: #111111">&quot;</span><span style="color: #C96765">interactive</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">===</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #0C969B">readyState</span><span style="color: #994CC3">||</span><span style="color: #111111">&quot;</span><span style="color: #C96765">complete</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">===</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #0C969B">readyState</span><span style="color: #994CC3">?</span><span style="color: #0C969B">c</span><span style="color: #994CC3">.</span><span style="color: #4876D6">call</span><span style="color: #403F53">(document)</span><span style="color: #994CC3">:</span><span style="color: #0C969B">b</span><span style="color: #994CC3">.</span><span style="color: #4876D6">push</span><span style="color: #403F53">(</span><span style="color: #994CC3">function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #994CC3">return</span><span style="color: #403F53"> </span><span style="color: #0C969B">c</span><span style="color: #994CC3">.</span><span style="color: #4876D6">call</span><span style="color: #403F53">(</span><span style="color: #0C969B">this</span><span style="color: #403F53">)})</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">this</span><span style="color: #403F53">}</span><span style="color: #5F7E97">,</span><span style="color: #4876D6">d</span><span style="color: #994CC3">=function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #994CC3">for</span><span style="color: #403F53">(</span><span style="color: #994CC3">var </span><span style="color: #403F53">a</span><span style="color: #994CC3">=</span><span style="color: #AA0982">0</span><span style="color: #5F7E97">,</span><span style="color: #403F53">c</span><span style="color: #994CC3">=</span><span style="color: #0C969B">b</span><span style="color: #994CC3">.</span><span style="color: #0C969B">length</span><span style="color: #403F53">;c</span><span style="color: #994CC3">&gt;</span><span style="color: #403F53">a;a</span><span style="color: #994CC3">++</span><span style="color: #403F53">)b[a]</span><span style="color: #994CC3">.</span><span style="color: #4876D6">apply</span><span style="color: #403F53">(document);b</span><span style="color: #994CC3">=</span><span style="color: #403F53">[]}</span><span style="color: #5F7E97">,</span><span style="color: #4876D6">e</span><span style="color: #994CC3">=function</span><span style="color: #111111">()</span><span style="color: #403F53">{a</span><span style="color: #994CC3">||</span><span style="color: #403F53">(a</span><span style="color: #994CC3">=!</span><span style="color: #AA0982">0</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">d</span><span style="color: #994CC3">.</span><span style="color: #4876D6">call</span><span style="color: #403F53">(window)</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #0C969B">removeEventListener</span><span style="color: #994CC3">?</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">removeEventListener</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">DOMContentLoaded</span><span style="color: #111111">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #403F53">e</span><span style="color: #5F7E97">,</span><span style="color: #994CC3">!</span><span style="color: #AA0982">1</span><span style="color: #403F53">)</span><span style="color: #994CC3">:</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #0C969B">attachEvent</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53">(</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">detachEvent</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">onreadystatechange</span><span style="color: #111111">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #403F53">e)</span><span style="color: #5F7E97">,</span><span style="color: #403F53">window</span><span style="color: #994CC3">==</span><span style="color: #0C969B">window</span><span style="color: #994CC3">.</span><span style="color: #0C969B">top</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53">(</span><span style="color: #4876D6">clearInterval</span><span style="color: #403F53">(c)</span><span style="color: #5F7E97">,</span><span style="color: #403F53">c</span><span style="color: #994CC3">=</span><span style="color: #BC5454">null</span><span style="color: #403F53">)))}</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #0C969B">addEventListener</span><span style="color: #994CC3">?</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">addEventListener</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">DOMContentLoaded</span><span style="color: #111111">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #403F53">e</span><span style="color: #5F7E97">,</span><span style="color: #994CC3">!</span><span style="color: #AA0982">1</span><span style="color: #403F53">)</span><span style="color: #994CC3">:</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #0C969B">attachEvent</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53">(</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">attachEvent</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">onreadystatechange</span><span style="color: #111111">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #994CC3">function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #111111">/</span><span style="color: #5CA7E4">loaded</span><span style="color: #0C969B">|</span><span style="color: #5CA7E4">complete</span><span style="color: #111111">/</span><span style="color: #994CC3">.</span><span style="color: #4876D6">test</span><span style="color: #403F53">(</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #0C969B">readyState</span><span style="color: #403F53">)</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #4876D6">e</span><span style="color: #403F53">()})</span><span style="color: #5F7E97">,</span><span style="color: #403F53">window</span><span style="color: #994CC3">==</span><span style="color: #0C969B">window</span><span style="color: #994CC3">.</span><span style="color: #0C969B">top</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53">(c</span><span style="color: #994CC3">=</span><span style="color: #4876D6">setInterval</span><span style="color: #403F53">(</span><span style="color: #994CC3">function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #994CC3">try</span><span style="color: #403F53">{a</span><span style="color: #994CC3">||</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #111111">documentElement</span><span style="color: #994CC3">.</span><span style="color: #4876D6">doScroll</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">left</span><span style="color: #111111">&quot;</span><span style="color: #403F53">)}</span><span style="color: #994CC3">catch</span><span style="color: #403F53">(b){</span><span style="color: #994CC3">return</span><span style="color: #403F53">}</span><span style="color: #4876D6">e</span><span style="color: #403F53">()}</span><span style="color: #5F7E97">,</span><span style="color: #AA0982">5</span><span style="color: #403F53">)))}(),bszCaller</span><span style="color: #994CC3">=</span><span style="color: #403F53">{</span><span style="color: #4876D6">fetch</span><span style="color: #403F53">:</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">a,b</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #994CC3">var </span><span style="color: #403F53">c</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">BusuanziCallback_</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">+</span><span style="color: #0C969B">Math</span><span style="color: #994CC3">.</span><span style="color: #4876D6">floor</span><span style="color: #403F53">(</span><span style="color: #AA0982">1099511627776</span><span style="color: #994CC3">*</span><span style="color: #0C969B">Math</span><span style="color: #994CC3">.</span><span style="color: #4876D6">random</span><span style="color: #403F53">());window[c]</span><span style="color: #994CC3">=</span><span style="color: #0C969B">this</span><span style="color: #994CC3">.</span><span style="color: #4876D6">evalCall</span><span style="color: #403F53">(b)</span><span style="color: #5F7E97">,</span><span style="color: #403F53">a</span><span style="color: #994CC3">=</span><span style="color: #0C969B">a</span><span style="color: #994CC3">.</span><span style="color: #4876D6">replace</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">=BusuanziCallback</span><span style="color: #111111">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #111111">&quot;</span><span style="color: #C96765">=</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">+</span><span style="color: #403F53">c)</span><span style="color: #5F7E97">,</span><span style="color: #403F53">scriptTag</span><span style="color: #994CC3">=</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">createElement</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">SCRIPT</span><span style="color: #111111">&quot;</span><span style="color: #403F53">)</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">type</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">text/javascript</span><span style="color: #111111">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">defer</span><span style="color: #994CC3">=!</span><span style="color: #AA0982">0</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">src</span><span style="color: #994CC3">=</span><span style="color: #403F53">a</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">scriptTag</span><span style="color: #994CC3">.</span><span style="color: #0C969B">referrerPolicy</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">no-referrer-when-downgrade</span><span style="color: #111111">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">getElementsByTagName</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">HEAD</span><span style="color: #111111">&quot;</span><span style="color: #403F53">)[</span><span style="color: #AA0982">0</span><span style="color: #403F53">]</span><span style="color: #994CC3">.</span><span style="color: #4876D6">appendChild</span><span style="color: #403F53">(scriptTag)},</span><span style="color: #4876D6">evalCall</span><span style="color: #403F53">:</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">a</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #994CC3">return</span><span style="color: #403F53"> </span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">b</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #4876D6">ready</span><span style="color: #403F53">(</span><span style="color: #994CC3">function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #994CC3">try</span><span style="color: #403F53">{</span><span style="color: #4876D6">a</span><span style="color: #403F53">(b)</span><span style="color: #5F7E97">,</span><span style="color: #403F53">s</span><span style="color: #994CC3">=</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">querySelector</span><span style="color: #403F53">(</span><span style="color: #111111">&#39;</span><span style="color: #C96765">[src*=BusuanziCallback]</span><span style="color: #111111">&#39;</span><span style="color: #403F53">)</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">s</span><span style="color: #994CC3">.</span><span style="color: #111111">parentElement</span><span style="color: #994CC3">.</span><span style="color: #4876D6">removeChild</span><span style="color: #403F53">(s)}</span><span style="color: #994CC3">catch</span><span style="color: #403F53">(c){</span><span style="color: #0C969B">console</span><span style="color: #994CC3">.</span><span style="color: #4876D6">error</span><span style="color: #403F53">(c)</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">bszTag</span><span style="color: #994CC3">.</span><span style="color: #4876D6">hides</span><span style="color: #403F53">()}})}}},</span><span style="color: #0C969B">bszCaller</span><span style="color: #994CC3">.</span><span style="color: #4876D6">fetch</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback</span><span style="color: #111111">&quot;</span><span style="color: #403F53">,</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">a</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #0C969B">bszTag</span><span style="color: #994CC3">.</span><span style="color: #4876D6">texts</span><span style="color: #403F53">(a)</span><span style="color: #5F7E97">,</span><span style="color: #0C969B">bszTag</span><span style="color: #994CC3">.</span><span style="color: #4876D6">shows</span><span style="color: #403F53">()}),bszTag</span><span style="color: #994CC3">=</span><span style="color: #403F53">{bszs:[</span><span style="color: #111111">&quot;</span><span style="color: #C96765">site_pv</span><span style="color: #111111">&quot;</span><span style="color: #403F53">,</span><span style="color: #111111">&quot;</span><span style="color: #C96765">page_pv</span><span style="color: #111111">&quot;</span><span style="color: #403F53">,</span><span style="color: #111111">&quot;</span><span style="color: #C96765">site_uv</span><span style="color: #111111">&quot;</span><span style="color: #403F53">],</span><span style="color: #4876D6">texts</span><span style="color: #403F53">:</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">a</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #0C969B">this</span><span style="color: #994CC3">.</span><span style="color: #111111">bszs</span><span style="color: #994CC3">.</span><span style="color: #4876D6">map</span><span style="color: #403F53">(</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">b</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #994CC3">var </span><span style="color: #403F53">c</span><span style="color: #994CC3">=</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">getElementById</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">busuanzi_value_</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">+</span><span style="color: #403F53">b);c</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53">(</span><span style="color: #0C969B">c</span><span style="color: #994CC3">.</span><span style="color: #0C969B">innerHTML</span><span style="color: #994CC3">=</span><span style="color: #403F53">a[b])})},</span><span style="color: #4876D6">hides</span><span style="color: #403F53">:</span><span style="color: #994CC3">function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #0C969B">this</span><span style="color: #994CC3">.</span><span style="color: #111111">bszs</span><span style="color: #994CC3">.</span><span style="color: #4876D6">map</span><span style="color: #403F53">(</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">a</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #994CC3">var </span><span style="color: #403F53">b</span><span style="color: #994CC3">=</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">getElementById</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">busuanzi_container_</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">+</span><span style="color: #403F53">a);b</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53">(</span><span style="color: #0C969B">b</span><span style="color: #994CC3">.</span><span style="color: #111111">style</span><span style="color: #994CC3">.</span><span style="color: #0C969B">display</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">none</span><span style="color: #111111">&quot;</span><span style="color: #403F53">)})},</span><span style="color: #4876D6">shows</span><span style="color: #403F53">:</span><span style="color: #994CC3">function</span><span style="color: #111111">()</span><span style="color: #403F53">{</span><span style="color: #0C969B">this</span><span style="color: #994CC3">.</span><span style="color: #111111">bszs</span><span style="color: #994CC3">.</span><span style="color: #4876D6">map</span><span style="color: #403F53">(</span><span style="color: #994CC3">function</span><span style="color: #111111">(</span><span style="color: #403F53">a</span><span style="color: #111111">)</span><span style="color: #403F53">{</span><span style="color: #994CC3">var </span><span style="color: #403F53">b</span><span style="color: #994CC3">=</span><span style="color: #0C969B">document</span><span style="color: #994CC3">.</span><span style="color: #4876D6">getElementById</span><span style="color: #403F53">(</span><span style="color: #111111">&quot;</span><span style="color: #C96765">busuanzi_container_</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">+</span><span style="color: #403F53">a);b</span><span style="color: #994CC3">&amp;&amp;</span><span style="color: #403F53">(</span><span style="color: #0C969B">b</span><span style="color: #994CC3">.</span><span style="color: #111111">style</span><span style="color: #994CC3">.</span><span style="color: #0C969B">display</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">inline</span><span style="color: #111111">&quot;</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">var </span><span style="color: #D7DBE0">bszCaller</span><span style="color: #C792EA">,</span><span style="color: #D7DBE0">bszTag</span><span style="color: #D6DEEB">;</span><span style="color: #C792EA">!function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">var </span><span style="color: #D7DBE0">c</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">d</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">e</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">=!</span><span style="color: #F78C6C">1</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">b</span><span style="color: #C792EA">=</span><span style="color: #D6DEEB">[];</span><span style="color: #82AAFF">ready</span><span style="color: #C792EA">=function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">c</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> </span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">||</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">interactive</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA">===</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">readyState</span><span style="color: #C792EA">||</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">complete</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA">===</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">readyState</span><span style="color: #C792EA">?</span><span style="color: #7FDBCA">c</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">call</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">document</span><span style="color: #D6DEEB">)</span><span style="color: #C792EA">:</span><span style="color: #7FDBCA">b</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">push</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">c</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">call</span><span style="color: #D6DEEB">(</span><span style="color: #7FDBCA">this</span><span style="color: #D6DEEB">)})</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">this</span><span style="color: #D6DEEB">}</span><span style="color: #5F7E97">,</span><span style="color: #82AAFF">d</span><span style="color: #C792EA">=function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">for</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">var </span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">=</span><span style="color: #F78C6C">0</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">c</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">b</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">length</span><span style="color: #D6DEEB">;</span><span style="color: #D7DBE0">c</span><span style="color: #C792EA">&gt;</span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">;</span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">++</span><span style="color: #D6DEEB">)</span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB">[</span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">]</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">apply</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">document</span><span style="color: #D6DEEB">);</span><span style="color: #D7DBE0">b</span><span style="color: #C792EA">=</span><span style="color: #D6DEEB">[]}</span><span style="color: #5F7E97">,</span><span style="color: #82AAFF">e</span><span style="color: #C792EA">=function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">||</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">=!</span><span style="color: #F78C6C">0</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">d</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">call</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">window</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">removeEventListener</span><span style="color: #C792EA">?</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">removeEventListener</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">DOMContentLoaded</span><span style="color: #D9F5DD">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">e</span><span style="color: #5F7E97">,</span><span style="color: #C792EA">!</span><span style="color: #F78C6C">1</span><span style="color: #D6DEEB">)</span><span style="color: #C792EA">:</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">attachEvent</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB">(</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">detachEvent</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">onreadystatechange</span><span style="color: #D9F5DD">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">e</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">window</span><span style="color: #C792EA">==</span><span style="color: #7FDBCA">window</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">top</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB">(</span><span style="color: #82AAFF">clearInterval</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">c</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">c</span><span style="color: #C792EA">=</span><span style="color: #FF5874">null</span><span style="color: #D6DEEB">)))}</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">addEventListener</span><span style="color: #C792EA">?</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">addEventListener</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">DOMContentLoaded</span><span style="color: #D9F5DD">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">e</span><span style="color: #5F7E97">,</span><span style="color: #C792EA">!</span><span style="color: #F78C6C">1</span><span style="color: #D6DEEB">)</span><span style="color: #C792EA">:</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">attachEvent</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB">(</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">attachEvent</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">onreadystatechange</span><span style="color: #D9F5DD">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #D9F5DD">/</span><span style="color: #5CA7E4">loaded</span><span style="color: #7FDBCA">|</span><span style="color: #5CA7E4">complete</span><span style="color: #D9F5DD">/</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">test</span><span style="color: #D6DEEB">(</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">readyState</span><span style="color: #D6DEEB">)</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #82AAFF">e</span><span style="color: #D6DEEB">()})</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">window</span><span style="color: #C792EA">==</span><span style="color: #7FDBCA">window</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">top</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">c</span><span style="color: #C792EA">=</span><span style="color: #82AAFF">setInterval</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">try</span><span style="color: #D6DEEB">{</span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">||</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">documentElement</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">doScroll</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">left</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">)}</span><span style="color: #C792EA">catch</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB">){</span><span style="color: #C792EA">return</span><span style="color: #D6DEEB">}</span><span style="color: #82AAFF">e</span><span style="color: #D6DEEB">()}</span><span style="color: #5F7E97">,</span><span style="color: #F78C6C">5</span><span style="color: #D6DEEB">)))}(),</span><span style="color: #D7DBE0">bszCaller</span><span style="color: #C792EA">=</span><span style="color: #D6DEEB">{</span><span style="color: #82AAFF">fetch</span><span style="color: #D6DEEB">:</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">,</span><span style="color: #D7DBE0">b</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">var </span><span style="color: #D7DBE0">c</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">BusuanziCallback_</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA">+</span><span style="color: #7FDBCA">Math</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">floor</span><span style="color: #D6DEEB">(</span><span style="color: #F78C6C">1099511627776</span><span style="color: #C792EA">*</span><span style="color: #7FDBCA">Math</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">random</span><span style="color: #D6DEEB">());</span><span style="color: #D7DBE0">window</span><span style="color: #D6DEEB">[</span><span style="color: #D7DBE0">c</span><span style="color: #D6DEEB">]</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">this</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">evalCall</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">a</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">a</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">replace</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">=BusuanziCallback</span><span style="color: #D9F5DD">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA">+</span><span style="color: #D7DBE0">c</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">scriptTag</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">createElement</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">SCRIPT</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">type</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">text/javascript</span><span style="color: #D9F5DD">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">defer</span><span style="color: #C792EA">=!</span><span style="color: #F78C6C">0</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">src</span><span style="color: #C792EA">=</span><span style="color: #D7DBE0">a</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">scriptTag</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">referrerPolicy</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">no-referrer-when-downgrade</span><span style="color: #D9F5DD">&quot;</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">getElementsByTagName</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">HEAD</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">)[</span><span style="color: #F78C6C">0</span><span style="color: #D6DEEB">]</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">appendChild</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">scriptTag</span><span style="color: #D6DEEB">)},</span><span style="color: #82AAFF">evalCall</span><span style="color: #D6DEEB">:</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">a</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">return</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">b</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #82AAFF">ready</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">try</span><span style="color: #D6DEEB">{</span><span style="color: #82AAFF">a</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #D7DBE0">s</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">querySelector</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">[src*=BusuanziCallback]</span><span style="color: #D9F5DD">&#39;</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">s</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">parentElement</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">removeChild</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">s</span><span style="color: #D6DEEB">)}</span><span style="color: #C792EA">catch</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">c</span><span style="color: #D6DEEB">){</span><span style="color: #7FDBCA">console</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">error</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">c</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">bszTag</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">hides</span><span style="color: #D6DEEB">()}})}}},</span><span style="color: #7FDBCA">bszCaller</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">fetch</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">,</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">a</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #7FDBCA">bszTag</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">texts</span><span style="color: #D6DEEB">(</span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">)</span><span style="color: #5F7E97">,</span><span style="color: #7FDBCA">bszTag</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">shows</span><span style="color: #D6DEEB">()}),</span><span style="color: #D7DBE0">bszTag</span><span style="color: #C792EA">=</span><span style="color: #D6DEEB">{bszs:[</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">site_pv</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">,</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">page_pv</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">,</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">site_uv</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">],</span><span style="color: #82AAFF">texts</span><span style="color: #D6DEEB">:</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">a</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #7FDBCA">this</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">bszs</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">map</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">b</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">var </span><span style="color: #D7DBE0">c</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">getElementById</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">busuanzi_value_</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA">+</span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB">);</span><span style="color: #D7DBE0">c</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB">(</span><span style="color: #7FDBCA">c</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">innerHTML</span><span style="color: #C792EA">=</span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">[</span><span style="color: #D7DBE0">b</span><span style="color: #D6DEEB">])})},</span><span style="color: #82AAFF">hides</span><span style="color: #D6DEEB">:</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #7FDBCA">this</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">bszs</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">map</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">a</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">var </span><span style="color: #D7DBE0">b</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">getElementById</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">busuanzi_container_</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA">+</span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">);</span><span style="color: #D7DBE0">b</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB">(</span><span style="color: #7FDBCA">b</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">style</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">display</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">none</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">)})},</span><span style="color: #82AAFF">shows</span><span style="color: #D6DEEB">:</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">()</span><span style="color: #D6DEEB">{</span><span style="color: #7FDBCA">this</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">bszs</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">map</span><span style="color: #D6DEEB">(</span><span style="color: #C792EA">function</span><span style="color: #D9F5DD">(</span><span style="color: #D7DBE0">a</span><span style="color: #D9F5DD">)</span><span style="color: #D6DEEB">{</span><span style="color: #C792EA">var </span><span style="color: #D7DBE0">b</span><span style="color: #C792EA">=</span><span style="color: #7FDBCA">document</span><span style="color: #C792EA">.</span><span style="color: #82AAFF">getElementById</span><span style="color: #D6DEEB">(</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">busuanzi_container_</span><span style="color: #D9F5DD">&quot;</span><span style="color: #C792EA">+</span><span style="color: #D7DBE0">a</span><span style="color: #D6DEEB">);</span><span style="color: #D7DBE0">b</span><span style="color: #C792EA">&amp;&amp;</span><span style="color: #D6DEEB">(</span><span style="color: #7FDBCA">b</span><span style="color: #C792EA">.</span><span style="color: #FAF39F">style</span><span style="color: #C792EA">.</span><span style="color: #7FDBCA">display</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">inline</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">)})}};</span></span></code></pre></div></section><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><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="HTML 代码块" data-v-c675dba6>HTML</h5><ile-root id="ile-33"><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-33--></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">&lt;script </span><span style="color: #4876D6">async</span><span style="color: #994CC3"> </span><span style="color: #4876D6">src</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">&gt;&lt;/script&gt;</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: #7FDBCA">&lt;</span><span style="color: #CAECE6">script</span><span style="color: #7FDBCA"> </span><span style="color: #C5E478">async</span><span style="color: #7FDBCA"> </span><span style="color: #C5E478">src</span><span style="color: #7FDBCA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js</span><span style="color: #D9F5DD">&quot;</span><span style="color: #7FDBCA">&gt;&lt;/</span><span style="color: #CAECE6">script</span><span style="color: #7FDBCA">&gt;</span></span></code></pre></div></section><p>修改为<span class="mojikumi-line-start">（</span>如果上面的代码放在了博客的 <code>/<wbr>js<wbr>/<wbr>busuanzi<wbr>.<wbr>pure<wbr>.<wbr>mini<wbr>.<wbr>js</code><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><h5 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="HTML 代码块" data-v-c675dba6>HTML</h5><ile-root id="ile-34"><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-34--></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">&lt;script </span><span style="color: #4876D6">async</span><span style="color: #994CC3"> </span><span style="color: #4876D6">src</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">/js/busuanzi.pure.mini.js</span><span style="color: #111111">&quot;</span><span style="color: #994CC3">&gt;&lt;/script&gt;</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: #7FDBCA">&lt;</span><span style="color: #CAECE6">script</span><span style="color: #7FDBCA"> </span><span style="color: #C5E478">async</span><span style="color: #7FDBCA"> </span><span style="color: #C5E478">src</span><span style="color: #7FDBCA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">/js/busuanzi.pure.mini.js</span><span style="color: #D9F5DD">&quot;</span><span style="color: #7FDBCA">&gt;&lt;/</span><span style="color: #CAECE6">script</span><span style="color: #7FDBCA">&gt;</span></span></code></pre></div></section></div></details></aside>
<p>网上搜到的很多解决办法是把 <code>id<wbr>="<wbr>busuanzi_<wbr>container_<wbr>*"</code> 删掉<span class="mojikumi-line-end">，</span>这样当然就不会被隐藏了<span class="mojikumi-line-end">，</span>只不过这个隐藏本意是在出错时不把错误或者无意义的内容显示给访客<span class="mojikumi-line-end">，</span>保留这一行为还是挺好的<span class="mojikumi-line-end">。</span></p>
<h3 id="修改-live2d-的解决方法" class="heading"><a href="#修改-live2d-的解决方法" class="heading-anchor" aria-label="章节： 修改 live2d 的解决方法" tabindex="-1"></a><span>修改 live2d 的解决方法</span></h3>
<p>总之<span class="mojikumi-line-end">，</span>就是把 <code>innerHTML +=</code> 换成 <code>createElement</code> 和 <code>appendChild</code><span class="mojikumi-line-end">，</span>按 <a href="https://github.com/xiazeyu/live2d-widget.js/pull/61/files#diff-61426849230d9976d234f7c4ca195c623d9bb05a91d76b7ae51501e394f81860L10-R43">xiazeyu/live2d-widget.js#61</a> 改就行<span class="mojikumi-line-end">。</span></p>
<p>live2d 的代码还是挺长的<span class="mojikumi-line-end">，</span>直接修改 minify 后的代码不太好<span class="mojikumi-line-end">。</span>如果是 hexo 插件的话<span class="mojikumi-line-end">，</span>要修改应该也蛮麻烦的<span class="mojikumi-line-end">。</span>总之<span class="mojikumi-line-end">，</span>如果你知道怎么改比较好的话可以改<span class="mojikumi-line-end">，</span>不然的话还是推荐改 busuanzi<span class="mojikumi-line-end">。</span></p>
<h2 id="问题启示" class="heading"><a href="#问题启示" class="heading-anchor" aria-label="章节： 问题启示" tabindex="-1"></a><span>问题启示</span></h2>
<h3 id="不要修改原-dom-中的-innerhtml" class="heading"><a href="#不要修改原-dom-中的-innerhtml" class="heading-anchor" aria-label="章节： 不要修改原 DOM 中的 innerHTML" tabindex="-1"></a><span>不要修改原 DOM 中的 innerHTML</span></h3>
<p>直接修改 DOM 元素的 innerHTML 会让其中的元素都重新渲染<span class="mojikumi-line-start">（</span>加载？创建？<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>不仅指向其中元素的变量会失效<span class="mojikumi-line-end">，</span>也可能导致画面闪烁等问题<span class="mojikumi-line-start">（</span>例如导致 live2d-widget 修复这一问题的不是 busuanzi 失效而是 <a href="https://github.com/EYHN/hexo-helper-live2d/issues/149">CSS 闪烁</a><span class="mojikumi">）</span><span class="mojikumi-line-end">。</span></p>
<p>所以<span class="mojikumi-line-end">，</span>如果是添加 DOM 元素<span class="mojikumi-line-end">，</span>应当避免修改 <code>innerHTML</code><span class="mojikumi-line-end">，</span>而应当使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement"><code>document<wbr>.<wbr>createElement</code></a> 和 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild"><code>Node<wbr>.<wbr>appendChild<wbr>()</code></a> 以及 <code>removeChild</code><span class="mojikumi-line-end">、</span><code>replaceChild</code><span class="mojikumi-line-end">、</span><code>insertBefore</code> 等 API<span class="mojikumi-line-end">。</span></p>
<h3 id="不要依赖于指向-dom-元素的变量长时间不改变" class="heading"><a href="#不要依赖于指向-dom-元素的变量长时间不改变" class="heading-anchor" aria-label="章节： 不要依赖于指向 DOM 元素的变量长时间不改变" tabindex="-1"></a><span>不要依赖于指向 DOM 元素的变量长时间不改变</span></h3>
<p>如果 DOM 因各种原因部分重建<span class="mojikumi-line-end">，</span>指向 DOM 元素的变量很可能不再指向当前 DOM 中的元素<span class="mojikumi-line-end">。</span>所以<span class="mojikumi-line-end">，</span>最好不要在过了一段时间后<span class="mojikumi-line-start">（</span>例如在 callback 中<span class="mojikumi-line-end">）</span>再次使用指向 DOM 元素的变量<span class="mojikumi-line-end">，</span>而应当再次获取这一元素<span class="mojikumi-line-end">。</span></p>
<h3 id="不要-silently-fail" class="heading"><a href="#不要-silently-fail" class="heading-anchor" aria-label="章节： 不要 silently fail" tabindex="-1"></a><span>不要 silently fail</span></h3>
<p>在处理异常<span class="mojikumi-line-end">，</span>尤其是未知的异常时<span class="mojikumi-line-end">，</span>即使不 throw 出去<span class="mojikumi-line-end">，</span>也最好用 <code>console<wbr>.<wbr>error</code> 等方法记录下来<span class="mojikumi-line-end">。</span>记录在 console 中的错误信息并不会显示给普通用户<span class="mojikumi-line-end">，</span>但可以给寻找问题所在的用户提供宝贵的提示信息<span class="mojikumi-line-end">。</span></p>
<h3 id="使用-header-editor-在对原环境最小修改的情况下进行调试" class="heading"><a href="#使用-header-editor-在对原环境最小修改的情况下进行调试" class="heading-anchor" aria-label="章节： 使用 Header Editor 在对原环境最小修改的情况下进行调试" tabindex="-1"></a><span>使用 Header Editor 在对原环境最小修改的情况下进行调试</span></h3>
<p>这次使用 Header Editor 调试还是我临时想到的<span class="mojikumi-line-start">（</span><s>知道有这么个插件还是以前用 <a href="https://github.com/EndlessCheng/mahjong-helper">mahjong-helper</a><span class="mojikumi-line-end">，</span>当然现在已经没在用了</s><span class="mojikumi">）</span><span class="mojikumi-line-end">。</span>一开始还用 pastebin 上传代码<span class="mojikumi-line-end">，</span>效率极低<span class="mojikumi-line-end">，</span>后来才想起来本地跑个 http server 就可以了..用这个插件来调试还是挺方便的<span class="mojikumi-line-end">。</span></p>
<h3 id="留心依赖版本" class="heading"><a href="#留心依赖版本" class="heading-anchor" aria-label="章节： 留心依赖版本" tabindex="-1"></a><span>留心依赖版本</span></h3>
<p>一开始我还在 GitHub 上搜到一个 <a href="https://github.com/JoeyBling/busuanzi.pure.js">busuanzi.pure.js</a><span class="mojikumi-line-end">，</span>调了一会儿才发现这个代码和 <a href="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js">https<wbr>://<wbr>busuanzi<wbr>.<wbr>ibruce<wbr>.<wbr>info<wbr>/<wbr>busuanzi<wbr>/<wbr>2<wbr>.<wbr>3<wbr>/<wbr>busuanzi<wbr>.<wbr>pure<wbr>.<wbr>mini<wbr>.<wbr>js</a> 不一样..</p>
<p>live2d 的版本也要注意开头包含时间的注释<span class="mojikumi-line-end">，</span>因为最新版本已经把问题修复了<span class="mojikumi-line-end">。</span></p>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/busuanzi">busuanzi</category>
            <category domain="https://ouuan.moe/tag/live2d">live2d</category>
            <category domain="https://ouuan.moe/tag/JavaScript">JavaScript</category>
            <category domain="https://ouuan.moe/tag/Web">Web</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>