当前位置: 首页 > 面试题库 >

如何使用gcc进行汇编

林绪
2023-03-14
问题内容

如何编译为汇编而不是gcc可执行文件。我知道有一个 -S 标志,但是我在makefile中的哪里使用它。例如,如果我使用标志 -O3 -o
exe_name
,则应将-S标志放在哪里?


问题答案:

我建议也使用它,-fverbose-asm因为生成的汇编器具有一些生成的注释,可以“解释”代码。例如:

gcc -S -fverbose-asm -O2 foo.c

将在foo.s(带有一些注释)中生成通过编译生成的汇编代码foo.c

要了解GCC优化正在做什么,甚至可以尝试-fdump-tree-all(但这会产生 数百个 文件!)。



 类似资料:
  • 问题内容: 是否可以从内联汇编块中使用syscall编写单个字符?如果是这样,怎么办?它应该看起来像“东西”: $ 80是ascii中的“ P”,但是什么也不会返回。 任何建议,不胜感激! 问题答案: 就像是 添加 :请注意,我曾经将char的有效地址加载到寄存器中;对于我尝试$ 0和$ 1的价值,它似乎仍然可以工作… 避免使用外部字符 注意:它之所以有效是因为Intel处理器的字节序!:D

  • 问题内容: 我想用Cython包装一个包含C ++和OpenMP代码的测试项目,并通过文件与distutils一起构建它。我文件的内容如下所示: 该标志与gcc一起用于针对OpenMP进行编译和链接。但是,如果我只是调用 由于编译器是clang,因此无法识别此标志: 我尝试指定gcc失败: 如何告诉distutils使用gcc? 问题答案: 尝试使用os.environ从setup.py内部设置“

  • 我想用Cython包装一个包含C和OpenMP代码的测试项目,并通过一个文件用distutils构建它。我的文件内容是这样的: 标志与gcc一起用于编译和链接OpenMP。然而,如果我只是调用 无法识别此标志,因为编译器为clang: 我尝试指定gcc失败: 如何告诉distutils使用gcc?

  • GCC扩展内联汇编 使用GCC扩展内联汇编的例子如下: #define read_cr0() ({ \ unsigned int __dummy; \ __asm__( \ "movl %%cr0,%0\n\t" \ :"=r" (__dummy)); \ __dummy; \ }) 它代表什么含义呢?这需要从其基本格式讲起。GCC扩展内联汇编的基本格式是: asm [volat

  • GCC基本内联汇编 GCC 提供了两内内联汇编语句(inline asm statements):基本内联汇编语句(basic inline asm statement)和扩展内联汇编语句(extended inline asm statement)。GCC基本内联汇编很简单,一般是按照下面的格式: asm("statements"); 例如: asm("nop"); asm("

  • 在尝试让一些旧代码重新工作时(https://github.com/chaos4ever/chaos/blob/master/libraries/system/system_calls.h#l387,FWIW),我发现的一些语义似乎在最近的10-15年中发生了非常微妙但仍然危险的变化...:p 该代码在的旧版本(如2.95)中可以很好地工作。总之,这里是代码: 上面代码的问题是(在我的例子中为4.