![]() |
1
4
如果您仍然有兴趣添加GCC通行证,您可以开始阅读GCC wiki材料:
|
![]() |
2
3
仅供将来参考:即将发布的GCC版本(4.4.0+)将为 plugins 专门用于诸如添加 optimization passes 到编译器,而不必引导整个编译器。
|
![]() |
3
1
回答你的问题:GCC是一个非常流行的编译器平台,可以做编译器的研究,所以是的,我相信有人做过。 不过,我不认为这是周末的事。钩住GCC的代码生成并不是你周末要做的事情。(我不知道你的范围是什么,你愿意投资多少时间。)如果你真的想让GCC做你想做的,你肯定想从GCC的一个讨论开始。 mailing lists . 小贴士:不要以为别人读过你的其他问题。如果你想引用一个问题,请添加一个链接到它,如果你想让人们找到它。 |
![]() |
4
1
你需要使用GCC吗? LLVM 看起来可以用。它是用C++编写的,很容易。 write a pass . |
![]() |
5
1
这是一个有趣的问题。我将讨论围绕这个问题的概念,而不是直接回答这个问题,因为,嗯,我对GCC的内部不太了解。 您可能已经研究了一些更高级的源代码操作,以实现您想要实现的目标;某种
在函数“foo”上用宏插入。不过,如果您正在寻找一个编译器黑客,那么您可能不想修改源代码。 讨论了一些GCC扩展 here 听起来有点像你想要的。如果gcc有任何你想做的事情,它可能会被记录在C语言中。 extensions 文档的区域。我找不到任何听起来和你描述的完全一样的东西,但也许因为你最了解你要找的东西,你就会知道如何找到它。 一个gdb脚本可以很好地输出调试,但听起来你有比简单的printf更大的计划。在代码中插入重要的逻辑似乎是你想要的。 这让我想起了我最近遇到的一些动态链接器技巧。图书馆 interposing 无法在函数调用周围插入代码而不影响原始源。我遇到的例子是在Solaris上,但在其他平台上可能也有类似的例子。 刚刚看到文档中的-fintrument函数选项 here -查找仪器功能 为函数的入口和出口生成检测调用。就在功能之后 在函数退出之前,将调用以下分析函数 当前函数及其调用站点的地址。(在某些平台上, _内置的返回地址在当前函数之外不起作用,因此调用站点 否则,信息可能无法用于分析函数。)
但我想这不起作用,因为您无法修改分析函数的返回值。 |
![]() |
6
0
gcc,GNU编译器集合,是一个大的套件,我认为破解它的源代码并不是您在单个应用程序中发现问题的答案。
听起来您在寻找调试或分析工具,例如
gdb
及其各种前端(XGDB、DDD)和
gprof
. 内存/边界检查工具,如电子围栏、glibc's
memcheck
瓦尔格林德
mudflap
如果这是内存或指针问题,可能会有所帮助。为警告和更新的C标准启用编译器标志可能很有用
我不明白你的意思
所以我不确定你在找什么。你能举一个简单的或伪代码的例子吗? 即。
|
![]() |
Darky · 多重定义…c++vsCode[重复] 2 年前 |
![]() |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
![]() |
Noè Murr · 如何获得C函数的基本编译二进制代码? 3 年前 |
![]() |
AvirukBasak · gcc中无return语句的尾部递归 3 年前 |
![]() |
hepl · gcc如何决定在创建可执行文件时使用dynamics库? 3 年前 |