当我运行我的代码(任何代码)时,在调试模式下,我可以选择“反汇编”。
我知道“反汇编”是从存储在对象文件中的机器代码('1‘和'0’)中创建程序集代码。
因此,我可以假设,当我在Visual中编译我的代码时,在C/C++代码到机器代码/对象文件之间没有" assembly /Assembler“阶段,如果我想看到程序集代码,我需要要求Visual Studio将它从一个对象文件反汇编到另一个程序集。
所以我的问题是:
编者按: GCC对3的回答实际上与其他主流C/C++编译器不同,如clang/LLVM和MSVC。因为这与MSVC的工作原理是一个独立的问题,所以这个部分与其他的问题是重复的,所以Q&As:
发布于 2020-07-21 19:07:55
当调试器提供反汇编选项时,它通常检查正在运行的进程的内存,这是通过调试嵌入在可执行文件中或与其关联的信息来增强的,这些信息可以包括帮助调试器识别关联源代码的引用。
另外,编译器通常可以选择向您展示汇编语言,它要么是他们内部使用的汇编语言(可能是在传递给特定子进程(例如汇编程序)的临时文件中),要么是它的等效语言(如果不直接生成对象代码,它将生成什么)。对于GCC和Clang来说,-S交换机就是这样做的。对于Visual,/FA会这样做。
https://stackoverflow.com/questions/63021349
复制相似问题