GCC:内联汇编 - 适合吗?

标签 gcc assembly inline-assembly

所以我刚刚发现 GCC 可以进行内联汇编,我想知道两件事:

  • 能够内联汇编有什么好处?
  • 是否可以将 GCC 用作汇编编译器/汇编器来学习汇编?

  • 我找到了几篇文章,但它们都是 2000 年和 2001 年的旧文章,不太确定它们的相关性。

    谢谢

    最佳答案

    内联汇编的好处是让汇编代码内联(等一下,不要杀了我)。通过这样做,您不必担心调用约定,并且您可以更好地控制最终目标文件(这意味着您可以决定每个变量的位置 - 哪个寄存器或它是否存储在内存中),因为该代码赢了't 被优化(假设您使用 volatile 关键字)。

    关于你的第二个问题,是的,有可能。您可以做的是编写简单的 C 程序,然后将它们转换为汇编,使用

    gcc -S source.c
    

    有了这个,架构手册( MIPS ,Intel 等)以及 GCC手册,你可以走很长的路。

    网上有一些资料。

    http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

    http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/

    内联汇编的缺点是,您的代码通常无法在不同编译器之间移植。

    希望能帮助到你。

    关于GCC:内联汇编 - 适合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1609211/

    相关文章:

    rust - 写入内联 x86_64 程序集时,内联 asm 约束 'i' 的操作数无效

    gcc - 使用 PPC 汇编器时为 "Error: operand out of range"

    c - 错误: No matching asm pattern exists

    assembly - IRQ 编号冲突

    c - 在 Windows 上使用 MinGW 调用 GCC 时如何将 Win32 指定为输出

    c - c代码的性能

    assembly - 如何在 i386 中正确设置 ss 和 sp 寄存器

    c++ - 使用 C++ 在 Netbeans 中进行内联汇编

    c - 具有 "Independent"目标文件的多个定义

    linux - 多作业 make 中的 GNU Makefile 依赖