首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux内核在源代码或LLVM IR上的静态分析

linux内核在源代码或LLVM IR上的静态分析
EN

Stack Overflow用户
提问于 2022-10-20 17:16:07
回答 1查看 44关注 0票数 -1

https://www.usenix.org/system/files/sec21-tan.pdf中,作者对linux内核的LLVM进行了静态分析(调用图的构造,数据流分析和别名分析,以及.)。在其他一些论文中,我看到他们对LLVM IR做静态分析,而不是源代码。我的问题是他们为什么要对LLVM IR进行静态分析?为什么他们不分析linux内核的源代码呢?(例如,他们可以通过分析源代码来构造调用图,但是他们通过分析LLVM IR来构建调用图)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-20 22:24:34

分析LLVM IR简化了对程序语义的分析,同时需要分析源代码以查看程序在编程语言中所做的事情。我的意思是,C表达式*x绝对是在“执行间接”,但它可能加载或存储到内存中,例如,即使它包含*x,更大的表达式&*x也不会。这类事情不会发生在LLVM IR中。每个内存访问要么是loadstore指令,要么是通过call指令在被调用函数中进行的内存访问。但是,如果xNULL,那么即使更大的表达式是&*x*x仍然是未定义的行为,而且您将无法通过只查看LLVM IR就可以看到该错误。

LLVM还内置了大量分析,例如LLVM已经具备了构建调用图的能力。有时调用图在源代码中并不明显,您需要运行一些优化来查看被调用者是什么(或者删除死代码,用它消除函数调用),LLVM也能很好地执行优化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74143856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档