菜鸟教程小白 发表于 2022-12-13 09:06:38

ios - 在 iOS 上将 x86 asm 代码转换为 arm 代码


                                            <p><p>谁能帮我将以下 x86 内联 asm 代码转换为 arm 格式?</p>

<pre><code>bool N_FLAG = 0;
bool C_FLAG = 0;
bool Z_FLAG = 0;
bool V_FLAG = 0;

asm(&#34;sub %1, %%ebx;&#34;\
&#34;setsb N_FLAG;&#34;\
&#34;setzb Z_FLAG;&#34;\
&#34;setncb C_FLAG;&#34;\
&#34;setob V_FLAG;&#34;\
: &#34;=b&#34; (reg.I)\
: &#34;r&#34; (reg.I), &#34;b&#34; (value));
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>把它转换成 C 怎么样?</strong></p>

<p>看起来代码减去两个数字<code>(value - reg.I)</code>,将结果存储到<code>reg.I</code>,然后检查各种标志。</p>

<p>所以有些东西(粗略,未经测试),例如:</p>

<pre><code>reg.I = value - reg.I;
Z_FLAG = (reg.I == 0);
N_FLAG = (reg.I &lt; 0);
/* repeat for: carry, overflow */
</code></pre>

<p>然后让编译器发挥它的魔力? ARM gcc 编译器在将这类东西映射到正确的 ARM 指令方面也不错。</p>

<p>如果您想进行 ARM 汇编,您可能正在考虑使用条件移动指令,例如(快速编写 - 未经测试):</p>

<pre><code>__asm__ (
&#34;subs %, %, %\n\t&#34;
&#34;movmi %, #1\n\t&#34;
&#34;moveq %, #1\n\t&#34;
&#34;movcs %, #1\n\t&#34;
&#34;movvs %, #1\n\t&#34;
: &#34;+r&#34;(N_FLAG), &#34;+r&#34;(Z_FLAG), &#34;+r&#34;(C_FLAG), &#34;+r&#34;(V_FLAG), &#34;=r&#34; (reg.I)
: &#34;r&#34; (reg.I), &#34;r&#34;(value))
: &#34;cc&#34;
);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 iOS 上将 x86 asm 代码转换为 arm 代码,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/7375937/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/7375937/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 iOS 上将 x86 asm 代码转换为 arm 代码