c - 如何在二进制代码中找到函数边界

标签 c compiler-construction

我看到二进制翻译通常是基于跟踪的。是因为不能得到函数的边界吗?二进制代码中有功能标签吗?

最佳答案

对此没有简单的答案。您可以搜索 ret 指令,但它们不能保证它们是函数边界,因为您可以从函数中间返回。

搜索类似的内容

mov   ebp, esp 

在某种程度上会奏效,但同样不能保证。

一些编译器(最著名的是英特尔编译器)会将分支 block 移动到函数结束后,然后跳回函数...

关于c - 如何在二进制代码中找到函数边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354507/

相关文章:

c - 如何从c字符串中提取地址

c - C 中的分隔字符串

c++ - 为什么 C 需要 "struct"关键字而不是 C++?

java - scala:FOO 不能转换为 FOO

c - 我在关于基本对话的数组中遇到了麻烦

c - 移动数据 block ——memcpy 还是 memmove?

c++ - C/C++ 中的 bool 是什么?关键字还是宏?

c++ - 如何在 Visual C++ 2010 Express 中更改编译器

haskell - 如何在编译器中实现源映射?

c++ - C++ 开源前端的选项