首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual是从C源生成程序集还是从编译成的二进制代码生成程序集?

Visual是从C源生成程序集还是从编译成的二进制代码生成程序集?
EN

Stack Overflow用户
提问于 2020-07-21 19:01:44
回答 1查看 426关注 0票数 0

当我运行我的代码(任何代码)时,在调试模式下,我可以选择“反汇编”。

我知道“反汇编”是从存储在对象文件中的机器代码('1‘和'0’)中创建程序集代码。

因此,我可以假设,当我在Visual中编译我的代码时,在C/C++代码到机器代码/对象文件之间没有" assembly /Assembler“阶段,如果我想看到程序集代码,我需要要求Visual Studio将它从一个对象文件反汇编到另一个程序集。

所以我的问题是:

  1. 说得对吗,除了拆卸没有别的办法吗?

  1. (如果1为否):为什么Visual的调试器显示“反汇编”选项而不是“程序集”?

  1. 是Clang/GCC有一个装配阶段,还是C/C++代码直接编译成目标代码?

编者按: GCC对3的回答实际上与其他主流C/C++编译器不同,如clang/LLVM和MSVC。因为这与MSVC的工作原理是一个独立的问题,所以这个部分与其他的问题是重复的,所以Q&As:

EN

Stack Overflow用户

回答已采纳

发布于 2020-07-21 19:07:55

当调试器提供反汇编选项时,它通常检查正在运行的进程的内存,这是通过调试嵌入在可执行文件中或与其关联的信息来增强的,这些信息可以包括帮助调试器识别关联源代码的引用。

另外,编译器通常可以选择向您展示汇编语言,它要么是他们内部使用的汇编语言(可能是在传递给特定子进程(例如汇编程序)的临时文件中),要么是它的等效语言(如果不直接生成对象代码,它将生成什么)。对于GCC和Clang来说,-S交换机就是这样做的。对于Visual,/FA会这样做。

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63021349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档