gpt4 book ai didi

visual-c++ - MASM汇编中的“Function-level linking”(即COMDAT生成)?

转载 作者:行者123 更新时间:2023-12-02 04:02:45 30 4
gpt4 key购买 nike

有什么方法可以使MASM为函数生成COMDAT,以便链接器删除未使用的函数?

(即,我正在寻找MASM的/Gy的等效项。)

最佳答案

不简单,但是可行;讨论了herehere

第一步涉及将每个函数放入名称分别为.text $ a,.text $ b等的单独段中。这样,汇编程序不会将它们组合为单个.text节,但是链接程序最终会将它们组合在一起。在Microsoft链接器中,有一条特殊的规则,即节名称中$字符之后的内容。汇编器将发出一个带有多个代码节的.obj文件。我已经尝试过了,我可以确认。 MASM至少有一种味道。 :)

然后,他们建议在目标文件上运行实用程序,该实用程序会将您的部分标记为COMDAT。所述实用程序似乎因时间和位衰减而丢失,但是可以大致推断出其作用。它读取并解析COFF .obj文件,遍历各节,并在所有.text节上贴上COMDAT标志。我认为这只是一个标志。可能更多。作为重新创建它的第一步,我建议使用/ Gy然后不使用/ Gy编译一个C文件,并通过一些低级PE / COFF浏览器比较这两个.obj文件。我没有走这么远,因为我的情况截然不同。

关于visual-c++ - MASM汇编中的“Function-level linking”(即COMDAT生成)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423576/

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