首页 > 解决方案 > LLVM 如何处理 x86 标志寄存器?

问题描述

我开始使用 llvm 来玩弄语言。看完万花筒教程后我很好奇,LLVM如何表示,操纵x86标志寄存器?

如果存在溢出、进位或任何其他状态,我如何在 IR 中到达该状态并使用它?

标签: assemblycompiler-constructionllvmx86-64llvm-ir

解决方案


x86 标志和状态寄存器非常特定于目标,当然不应该在 LLVM IR 中建模——它太低级了。llvm.uadd.with.overflow相同的概念可以通过等以目标中立的方式建模。

此外,请记住 LLVM IR 通常采用 SSA 形式,因此只要最终值相同,就可以轻松地重新排列指令。但是,此操作不会使 x86 标志寄存器保持不变。


推荐阅读