- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 LLVM,我试图找出指令是否存在于流控制 (if/switch/for) 等中,我必须在 IR 级别执行此操作。伪代码如下所示。
if cond
inst
endif
我正在查看函数的 SCC,但我不确定如何推断出某条指令是否确实存在于流控制中。
以 Kaleidoscope 示例为本 IR。
declare double @foo()
declare double @bar()
define double @baz(double %x) {
entry:
%ifcond = fcmp one double %x, 0.000000e+00
%0 = call double @foo()
br i1 %ifcond, label %then, label %else
then: ; preds = %entry
%calltmp = call double @foo()
br label %ifcont
else: ; preds = %entry
%calltmp1 = call double @bar()
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi double [ %calltmp, %then ], [ %calltmp1, %else ]
%1 = call double @foo()
ret double %iftmp
}
所以在上面的 IR 中,假设我想找出对函数 foo 的所有调用。因此,在入口 block 中,我们有一个调用 %0 和一个在 then: block 中,我们有另一个调用 foo 和最后一个在 ifcont: block 中。
所以问题是,尽管 then: block 中的调用落在从 if block 生成的代码中,我如何推断出它?即 entry block 和 ifcont block 将被执行,但是 then: block 将根据条件不一定执行。
有人可以给我一些指示吗?谢谢
编辑:再考虑一下,支配树可能有助于确定这一点,但我还没有这方面的算法。
最佳答案
这是指令后支配的定义from Wikipedia :
Analogous to the definition of dominance above, a node z is said to post-dominate a node n if all paths to the exit node of the graph starting at n must go through z.
在我看来,在您的情况下,您正在寻找后支配函数中第一条指令的调用。根据后支配的定义,此类调用必须在从第一条指令开始的每条路径上都达到。这是您需要的吗?
您可以运行 DominatorTree
pass,它似乎支持后支配分析。
关于llvm - 如何查找 llvm::Instruction 是否在流量控制内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15316998/
是否有任何文档或 cecil 源代码的一部分可供我引用以全面了解 cecil 将针对给定的代码 使用哪些Operand 类型> 值(value)?例如:我可以从 MethodBodyRocks 中了解
在 Destroy 之后,我打印了一条 Log 语句,Log 是否会显示为应用程序已经被销毁并且在应用程序被销毁后无法执行任何指令。 @Override protected void onDe
我注意到,在某些情况下(我仍然是 R 的初学者!),多行指令不能“按原样”合并到简单的行指令中。让我们举个例子,这是我最近在网上的一个类: > make.power cube square ma
我做网站已经有一段时间了,我的网站设计不太好?我的老板正在推荐我去上一些课。 但我真的想坚持开发而不是设计吗? 最佳答案 您无需成为设计师。但我强烈建议您了解该过程和使用的一些技术。拥有这些知识将有助
指令微调 是一种技术,它能让大语言模型 (LLMs) 更好地理解和遵循人类的指令。但是,在编程任务中,大多数模型的微调都是基于人类编写的指令 (这需要很高的成本) 或者是由大型专有 LLMs 生成
我开始探索计算机体系结构领域。有两个关于 ISA 的问题让我困惑。 据我所知,ISA有多种,如ARM、MIPS、80x86等。我想知道CPU是否只能专门读取一种ISA。例如,处理器可以同时读取 80x
这只是一个简单的代码,用于检查一个数字是否是质数,我不知道这是编译器还是代码的问题。如果您能提供一些帮助,我们将不胜感激。 这是代码: #include "stdio.h" int main() {
我有以下一段 x86 汇编代码: 1 2 .text 3 4 .data 5 6 # define an array of 3 dwords 7
我理解计算机是图灵完备的概念(具有 MOV 或命令或 SUBNEG 命令,因此能够“合成”其他指令,例如 )。如果这是真的,那么像 x86 这样的 100 条指令的目的是什么?是为了提高效率? 最佳答
我刚刚开始使用Jenkinsfiles和Docker,所以很抱歉,这很明显。 我有一个包含Dockerfile和Jenkins文件的仓库。 Dockerfile通过添加几个依赖项和构建工具,简单地扩展
当指令 LOAD 800 被输入时,我了解其他值如何加载到累加器中,但我不知道如何获得索引和间接寻址的结果。 最佳答案 不确定您正在讨论哪种架构,因此我将尽我所能进行一般性解释(基于更具体架构的经验,
我正在使用反汇编程序(SmartDec:http://decompilation.info/)并且生成的反汇编中的许多指令看起来类似于: mov rax, [rip + 0x32b5]:64 我不熟悉
我的计算机上有一个 python3 脚本,我可以使用 python3motion_detection.py 运行它,并且该脚本有效,我尝试在我的 Raspberry 上使用它,但失败并显示消息非法指令
我遇到了这个错误 /tmp/ccK86fyk.s: Assembler messages: /tmp/ccK86fyk.s:69: Error: bad instruction `sw $3,0(r3
我正在尝试将一些 C/C++ 代码转换为 UNIX shell。我进行了一些转换,但有时,我发现 C/C++ 中的代码很奇怪,可能是因为我在上下文中不理解它。更重要的是,客户端没有给我输入/输出文件或
我已经尝试过 AVX 内在函数。但它导致“test.exe 中 0x00E01555 处出现未处理的异常:0xC000001D:非法指令。” 我使用的是 Visual Studio 2015。异常错误
这个问题在这里已经有了答案: Is the CSS :not() selector supposed to work with distant descendants? (2 个答案) 关闭 7
在Centos 6.2中,我使用gcc 4.8.0编译DPDK代码(dpdk-stable-17.05.2),遇到编译错误。编译命令:make install T=x86_64-native-linu
我正在浏览一些随机的 Java 代码并遇到了这段代码,我试图理解流程并且很难理解类的实际实现,类的实际操作,所以我的基本问题是WhatDoIDo 类实际上做了什么?任何指导将不胜感激。 问:解释由于在
我在 http://www.problemio.com/problems/problem.php 有一个页面,你在右下角看到我有一张蓝绿色的图像。它确实是一个链接,在该链接中我似乎无法让文本颜色显示为
我是一名优秀的程序员,十分优秀!