可以使用 c++filt 将解构后的名称写回 .s 文件本身吗?

Posted

技术标签:

【中文标题】可以使用 c++filt 将解构后的名称写回 .s 文件本身吗?【英文标题】:can c++filt be used to write the demangled name back in the .s file itself? 【发布时间】:2012-03-03 18:52:48 【问题描述】:

我只是想学习 c++filt,网上没有足够的示例用法......

我正在编写一个 main.cpp 文件并尝试读取机器代码....

g++ -S main.cpp -> gives me main.s

如果我需要找出解组后的值,我可以使用

g++ -S main.cpp | c++filt <demangled name>

例如)

g++ -S main.cpp | c++filt _Z3gooi

给我值goo(int i)//这是签名,

有没有一种方法,可以将当前的 main.s 文件替换为解组后的值,例如,_Z3gooi 将在文件本身中解组为 goo(int i),而不是控制台....? ???

【问题讨论】:

管道应该做什么? 管道输出 main.s.......所以 c++filt 将其作为输入并在右侧找到损坏的名称并给出损坏的名称..... @howtechstuffworks 但是 g++ 不会向标准输出写入任何内容,因此 c++filt 什么也看不到。 我猜,c++filt直接从文件夹中取出一个汇编文件.... 我只是做了 c++filt 文件名......它给了我价值......虽然神秘 【参考方案1】:

可以在

C++filt<main.s>temp.s

【讨论】:

【参考方案2】:

否,因为解构后的名称通常作为符号名称无效。

【讨论】:

以上是关于可以使用 c++filt 将解构后的名称写回 .s 文件本身吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用c ++filt [重复]

解构 C++ 符号的歧义

c++filt 不会对 typeid 名称进行分解

如何从音频队列缓冲区中提取整数样本并将修改后的样本写回?

解构和重命名属性

函数调用的对象解构