gpt4 book ai didi

windows - 如何找出引入 AVX 标志的内容

转载 作者:行者123 更新时间:2023-11-30 04:55:54 30 4
gpt4 key购买 nike

我有一个相当大的 x64 c++ 程序,它是用 Visual Studio 编译的。我们如何编译它有两种方法 - 一种是使用 sln 解决方案文件(从 IDE 或通过 msbuild),另一种是通过 VS 命令提示符中的 Makefile(然后在内部使用 Visual Studio 的 cl.exe 和 link.exe)。

不知何故,我遇到了这样一种情况,即通过 Makefile 生成的二进制构建生成了启用/AVX 指令的可执行文件,而我不希望这样,所以我想了解如何摆脱它。

我尝试在没有任何参数的情况下编译和链接它(尤其是在没有/arch:AVX 的情况下)。我希望我在 sln 和 Makefile 中编译和链接相同的源和库。

找出 AVX 来源的简单方法是什么?项目包括几十个 h/cpp 文件,大约 40 个自己的库,10 个 Windows 库。你将如何进行?

最佳答案

简单的方法,找一台没有 AVX 的旧电脑,在调试器中运行你的应用程序,它会因无效指令运行时错误而崩溃,并陷入调试器。这样您就可以立即找出该指令中编译了哪些代码。

另一种更难的方法是编写一个 C# 控制台应用程序来反汇编已编译的 DLL 或 EXE,并搜索 AVX 指令。您需要 Gee.External.Capstone nuget 包用于反汇编,PeNet 包用于解析成部分。 Also this code to disassemble . disassembleStreamEx 方法将返回指令流。搜索 X86InstructionGroup.AVX 或 X86InstructionGroup.AVX2 指令,打印地址,然后使用例如WinDBG + PDB 文件将地址转换为源代码位置。

更新:在此之前,在您的代码库中搜索包含_mm256_*.asm 文件的文件。如果幸运的话,您无需执行任何其他操作。

关于windows - 如何找出引入 AVX 标志的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52856289/

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