为什么在 Windows C++ 项目中使用 asm 文件?
Why asm files are used in a Windows C++ project?
我负责维护 Windows 工具。这个工具主要是用C++写的,提供GUI,通过COM接口在本地连接运行服务器。在源文件夹中,我看到了很多.asm 文件。我知道在某些嵌入式应用程序中,我们可以在 C 文件中插入一些汇编代码,以便调用中断或 read/write 寄存器(我不确定)。项目创建者已经退休,我不明白为什么会有那些 .asm 文件。为什么我们需要它们?它们是由 Visual Studio 自动创建的吗?他们只是为了加快编译过程吗?
为了更好地理解,我在下面提供了 3 张图片。
图一显示了 windows 资源管理器视图:
图二显示源洞察视图。每个 asm 文件都有一个同名的 cpp 文件:
图三是VS2010工程中的视图,不包含asm文件。
该项目似乎正在使用 /FAu
编译器选项。构建项目不需要生成的 .asm 文件。它们是人类可读的汇编程序,可用于检查编译器输出的指令。
根据 MSDN documentation for the flag:
Creates a listing file containing assembly code.
Causes the output file to be created in UTF-8 format, with a byte
order marker. By default, the file encoding is ANSI, but use /FAu if
you want a listing file that displays correctly on any system, or if
you are using Unicode source code files as input to the compiler.
我负责维护 Windows 工具。这个工具主要是用C++写的,提供GUI,通过COM接口在本地连接运行服务器。在源文件夹中,我看到了很多.asm 文件。我知道在某些嵌入式应用程序中,我们可以在 C 文件中插入一些汇编代码,以便调用中断或 read/write 寄存器(我不确定)。项目创建者已经退休,我不明白为什么会有那些 .asm 文件。为什么我们需要它们?它们是由 Visual Studio 自动创建的吗?他们只是为了加快编译过程吗?
为了更好地理解,我在下面提供了 3 张图片。
图一显示了 windows 资源管理器视图:
图二显示源洞察视图。每个 asm 文件都有一个同名的 cpp 文件:
图三是VS2010工程中的视图,不包含asm文件。
该项目似乎正在使用 /FAu
编译器选项。构建项目不需要生成的 .asm 文件。它们是人类可读的汇编程序,可用于检查编译器输出的指令。
根据 MSDN documentation for the flag:
Creates a listing file containing assembly code.
Causes the output file to be created in UTF-8 format, with a byte order marker. By default, the file encoding is ANSI, but use /FAu if you want a listing file that displays correctly on any system, or if you are using Unicode source code files as input to the compiler.