gpt4 book ai didi

valgrind - 为什么所有程序都被Valgrind分成200个基本 block ?

转载 作者:行者123 更新时间:2023-12-02 06:28:43 25 4
gpt4 key购买 nike

为什么所有程序都被Valgrind分为200个基本 block ?又如何划分?

最佳答案

第一个问题

自从我使用 Valgrind 工具以来已经有一段时间了(甚至比这个问题的存在时间还长),但如果有人仍然感兴趣,以下是我从内存中挖掘出来的内容:

首先,区别: super block 与基本 block 有点不同。 Valgrind 使用 super block ,而不是基本 block 。 super block 可以在任何时候退出,但基本 block 只有在运行结束时才会退出。

Valgrind 不会将程序划分为 200 个 super block 。我非常确定它会将程序分解为不超过 200 个 IRStatement 的 super block (可能会也可能不会直接转换为指令)。

我很确定这样做的原因是为了翻译器的效率:至少对于当前版本的 Valgrind,我有理由确定它不会预先翻译整个程序。将程序翻译成 IR 格式非常耗时且占用大量资源,因此翻译人员力求仅翻译所需的程序部分。它仅通过在第一次执行时翻译代码来实现此目的。

第二个问题

现在,关于你的第二个问题......我不完全确定你在问什么。如果您问“Valgrind 如何决定如何划分程序?”,那么答案是它的决定与编译器类似。它开始将程序转换为 super block ,并在达到 block 限制大小或检测到有从其他地方进入该 block 的入口点时启动一个新的 super block ( super block 和基本 block 只能有一个入口点)。

如果您的意思是“我可以更改 IRSB super block 的大小吗?”,那么是的,您可以在工具初始化代码中将一个选项传递回 Valgrind,告诉它您想要的 super block 大小(虽然我不记得你是否可以将其增加到任意大小)。这些都没有在线记录,并且仅在文件本身中很少记录。您可以查看其他工具的源代码,了解它们如何在初始化期间将配置选项传递给 Valgrind。这至少应该让您知道要查看哪些 header ,以找出需要传递回 Valgrind 的选项。

关于valgrind - 为什么所有程序都被Valgrind分成200个基本 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com