条件分支是不是更新 ARMv8 中的标志
Posted
技术标签:
【中文标题】条件分支是不是更新 ARMv8 中的标志【英文标题】:Do conditional branches update flags in ARMv8条件分支是否更新 ARMv8 中的标志 【发布时间】:2017-04-10 22:46:48 【问题描述】:我正在尝试实现类似于以下 C 代码的功能:
if(x<0)
<code A>
else if(x == 0)
<code B>
else //x > 0
<code C>
postIf code
所以我想知道是否可以通过在 ARMv8、AArch64 指令集中执行以下操作来做到这一点:
cmp x_r, 0 //x_r macro for x19
b.lt neg
b.gt pos
<code B>
b postIf
neg:
<code A>
b postIf
pos:
<code C>
postIf:
<postIf Code>
这行得通吗?检查条件分支后标志是否保持设置(或不设置)?
【问题讨论】:
arm 文档表明分支不会修改标志。他们还列出了修改标志的指令。 同时尝试一个测试程序,您会看到编译器假定/知道标志不受影响。 ARMv8 中有很多条件可以帮助你。 element14.com/community/servlet/JiveServlet/previewBody/… 【参考方案1】:是的,这应该可以正常工作。分支指令不修改标志。
【讨论】:
以上是关于条件分支是不是更新 ARMv8 中的标志的主要内容,如果未能解决你的问题,请参考以下文章