【问题标题】:what does the first m in -masm mean?-masm 中的第一个 m 是什么意思?
【发布时间】:2020-07-07 00:08:32
【问题描述】:

我是 gcc 的新手,只是在 gcc -masm 上的一个问题,我知道通过使用 masm,我们可以选择从 ATT(默认)到 Intel 的(反)汇编方言。而 -masm 是一个 GNU 选项,与微软的宏汇编器(masm)无关。 但是-masm中的第一个m是什么意思呢?

【问题讨论】:

标签: c assembly gcc


【解决方案1】:

gcc 有so many options 需要有一种方法将它们分成组,如果程序员有机会记住他们需要的那些。这是通过使用选项的第一个字母来指示它所属的组,其余的来描述特定选项本身来完成的。

-m 引入了一个 machine 选项:在为特定机器编译时特定于 gcc 行为的东西。您的 -masm= 仅对 x86 有意义,因为它在 x86 程序集方言之间进行选择。还有许多其他特定于 x86 的选项(-march=pentium 用于生成在 Pentium 上运行最好的代码,-mno-red-zone 用于更改“红色区域”调用约定等)还有更多用于其他体系结构的选项(-mthumb 在 ARM 上选择它具有的特定指令模式)。

其他一些值得了解的群体:

  • -W 用于请求w关于代码中各种可能问题的警告的选项:-Wuninitialized 以获取有关未初始化变量的警告,例如。

    (例外:-Wp, -Wa, -Wl 不是用于警告,而是用于分别将选项“传递”到预处理器/汇编器/链接器。)

  • -f 以某种与机器无关的方式设置影响解析、优化和代码生成过程的 f滞后:-fstrength-reduce 请求称为“强度降低”的特定优化, -fpic 用于与位置无关的代码等

  • -O 用于控制o优化的总量或优先级的选项:-O0 表示无,-O3 表示批次,-Os 用于优化大小等 p>

  • -g 用于控制要包含在生成的目标文件中的 debug 信息的选项。

  • -d 用于编译器 developers 使用的选项,可能会转储有关编译过程的信息。

【讨论】:

  • -Wl 也恰好用于将选项传递给链接器。
  • 谢谢,这非常有用!您是否有可能列出所有选项的来源?我正在寻找-D<option> 代表的选项
  • @Cole:这是我答案顶部的链接。 -D 在预处理器选项下,如 -Dmacro[=defn]。它定义了一个宏。
  • @NateEldredge 抱歉,我对 CMake -DAN_OPTION_NAME 样式标志感到困惑。
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2011-08-16
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多