assembly - LLVM 如何处理 x86 标志寄存器?
问题描述
我开始使用 llvm 来玩弄语言。看完万花筒教程后我很好奇,LLVM如何表示,操纵x86标志寄存器?
如果存在溢出、进位或任何其他状态,我如何在 IR 中到达该状态并使用它?
解决方案
x86 标志和状态寄存器非常特定于目标,当然不应该在 LLVM IR 中建模——它太低级了。llvm.uadd.with.overflow
相同的概念可以通过等以目标中立的方式建模。
此外,请记住 LLVM IR 通常采用 SSA 形式,因此只要最终值相同,就可以轻松地重新排列指令。但是,此操作不会使 x86 标志寄存器保持不变。
推荐阅读
- oracle - oracle sql developer 在下载窗口 10 后未打开 19.2.1
- flutter - 父小部件中的状态更新未反映在子小部件中
- java - Peek 中的 Java 8 条件逻辑?
- python - 如何绘制两个条形图
- multithreading - Qt 线程所有权
- sql - 使用另一个数组查找数组中出现的次数?
- javascript - 将类添加到香草JS中滚动的特定元素
- git - git - 有没有办法让我真正区分 2 个分支?
- javascript - 无法将 onclick 事件添加到 DOM 元素
- ruby-on-rails - 在 Rails 中设置一个额外的记录器——如何只实例化一次?