菜鸟教程小白 发表于 2022-12-13 05:29:43

ios - asm (arm64) 中的未知寄存器名称 "q0"


                                            <p><p>我目前正在尝试为新的 arm64 架构编译我的库。我有一堆 NEON 组件,但我收到了一个错误</p>

<blockquote>
<p>Unknown register name &#34;q0&#34; in asm.</p>
</blockquote>

<p>即使我写得这么简单:</p>

<pre><code>asm (
   &#34;&#34;
   :
   :
   : &#34;q0&#34;, &#34;q1&#34;, &#34;q2&#34;, &#34;q3&#34;
   );
</code></pre>

<p>我认为 arm64 支持 NEON。我错过了什么吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>“v0”:</p>

<pre><code>scanon$ cat bar.c
int foo(void) {
__asm__(&#34;&#34;:::&#34;q0&#34;);
return 0;
}
scanon$ xcrun -sdk iphoneos clang bar.c -arch arm64 -c
bar.c:2:16: error: unknown register name &#39;q0&#39; in asm
__asm__(&#34;&#34;:::&#34;q0&#34;);
               ^
1 error generated.
scanon$ cat foo.c
int foo(void) {
__asm__(&#34;&#34;:::&#34;v0&#34;);
return 0;
}
scanon$ xcrun -sdk iphoneos clang foo.c -arch arm64 -c
scanon$
</code></pre>

<p>arm64 是一个新的 ISA。实际的 NEON 指令和寄存器布局是全新的。您将需要为新架构重新编写或调整汇编代码。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - asm (arm64) 中的未知寄存器名称&#34;q0&#34;,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19984307/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19984307/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - asm (arm64) 中的未知寄存器名称 &#34;q0&#34;