gpt4 book ai didi

使用 PTRACE_SINGLESTEP 计算进程的机器指令

转载 作者:IT王子 更新时间:2023-10-29 01:12:17 29 4
gpt4 key购买 nike

在 Linux 机器上,我使用带有 PTRACE_SINGLESTEP 参数的 ptrace 来计算程序的机器指令数。我关注了这篇文章:http://www.ncsu.edu/it/mirror/ldp/LDP/LGNET/81/sandeep.html .

然而,结果对我来说似乎很奇怪。对于一个非常简单的程序,计算超过 95000 条机器指令。测试程序是

int main(void) { return 23; }

这是怎么回事?文章中的代码是错误的吗? (我看不出有什么问题。) 如果不是,是什么导致如此简单的程序需要 >95000 条指令?

最佳答案

您正在编译的 C 程序已链接到 C 库。它包含程序执行开始的 _start 符号。在这一点上,C 库初始化自身并最终调用 main。在 main 返回后,控制流回到 _start 并且还有一堆其他指令要执行并返回程序返回值。请注意,连续使用 PTRACE_SINGLESTEP 不会计算已编译指令的数量。它计算已执行指令的数量。这意味着在进入 main 之前、执行 main 时和退出 main 之后执行了 95k 条指令。

关于使用 PTRACE_SINGLESTEP 计算进程的机器指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375901/

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