什么是内联装配?(inline assembly?)

内联汇编—也称为内联汇编语言或内联汇编程序—是一组汇编语言代码,直接插入到另一种语言的函数和源代码中。这允许程序员将纯汇编语言块插入到程序中,程序的其余部分使用非汇编语言。这种能力在某些语言支持下,例如C、C++和Pascal——但是是使用的特定编译器的一个特点,不一定是语言标准的一部分。在许多情况下,内联汇编用于访问中央处理器(CPU)中的特殊功能、优化代码或执行非常低级的操作,如内存缓冲。尽管...

内联汇编—也称为内联汇编语言或内联汇编程序—是一组汇编语言代码,直接插入到另一种语言的函数和源代码中。这允许程序员将纯汇编语言块插入到程序中,程序的其余部分使用非汇编语言。这种能力在某些语言支持下,例如C、C++和Pascal——但是是使用的特定编译器的一个特点,不一定是语言标准的一部分。在许多情况下,内联汇编用于访问中央处理器(CPU)中的特殊功能、优化代码或执行非常低级的操作,如内存缓冲。尽管某些编译器或编程语言可能支持创建跨平台可执行文件,但内联汇编的使用通常将程序限制在可以使用特定汇编指令或具有匹配体系结构的系统中。

A dual core CPU mounted to a motherboard.

语言或编译器允许在标准源代码文件中包含内联汇编的方式有多种。最简单的方法之一是定义装配块的起点,然后将所有命令解释为直接装配。一些集成开发环境(IDE)和编译器实际上允许内联代码使用程序或函数中定义的变量,而无需先将它们显式加载到寄存器中。

在源文件中定义内联程序集的另一种方法是使用专用的纯汇编语言函数。在这种情况下,内联代码通常不能与非汇编代码(如控制循环或返回语句)组合。当以这种方式实现时,内联函数通常还需要显式地在堆栈上和堆栈下推送和弹出变量,以使用局部变量或在函数外部传递值。

内联汇编代码最常见的用途之一是对程序的小段进行精确优化。根据内联代码的集成方式,这可能意味着使用围绕内联代码的更多人类可读的语言命令,直接快速高效地执行某些操作。此外,如果目标系统已知,代码可以使用特定于硬件的寄存器和命令,使程序执行速度更快。

当其他方法可能失败或导致系统错误时,内联程序集可用于直接访问操作系统的部分、CPU甚至硬件端口。这可用于快速更改图形卡上的帧,或直接向特定中断或硬件端口发送信号。然而,以这种方式使用汇编代码的危险之一是,在某些系统上很难发现小错误或导致程序意外崩溃。

  • 发表于 2021-12-13 18:34
  • 阅读 ( 135 )
  • 分类:互联网

你可能感兴趣的文章

宏(macro)和内联函数(inline function)的区别

...称时,它将被宏的内容替换。 目录 1. 概述和主要区别 2. 什么是宏 3. 什么是内联函数 4. 并排比较-表格形式的宏与内联函数 5. 摘要 什么是宏(macro)? 预处理器是在源代码通过编译器之前对其进行处理的程序。它使用预处理器命...

  • 发布于 2020-10-19 00:27
  • 阅读 ( 413 )

块(block)和内联元素(inline elements)的区别

...了显示元素内容所需的宽度。 目录 1. 概述和主要区别 2. 什么是块元素 3. 什么是内联元素 4.块和内联元素之间的相似性 5. 并排比较-表格形式的块与内联元素 6. 摘要 什么是块元素(block elements)? 块元素采用可用的全宽。这些元...

  • 发布于 2020-10-19 13:55
  • 阅读 ( 236 )

内联(inline)和v型发动机(v engines)的区别

直列vs V引擎 直列和V型发动机是非常受欢迎的配置之间的汽车,甚至在多缸摩托车。它们之间的主要区别在于气缸的排列方式。直列发动机的气缸呈直线,而V型发动机的气缸分为两组,并以一定角度呈V型排列;导致发动机配...

  • 发布于 2021-06-23 19:52
  • 阅读 ( 419 )

命名空间(namespace)和装配(assembly)的区别

...间中,而Windows命名空间在系统命名空间中。 什么是装配(assembly)? 程序集是Microsoft.NET framework的标准组件。它可以作为可执行(.exe)文件或动态链接库(DLL)文件存在。程序集以清单的形式由关于模块、类型和其他元素的所有...

  • 发布于 2021-07-01 23:47
  • 阅读 ( 360 )

内联(inline)和v型发动机(v engines)的区别

...也被称为反向发动机。直列发动机和v型发动机的比较表什么是直列发动机(inline engines)?直列发动机最为人所知的是其易于建造和组装的性质,因为它需要很少的气缸盖。它们结构紧凑,尺寸较小。它通常用于其四缸配置,以获...

  • 发布于 2021-07-11 12:09
  • 阅读 ( 421 )

在使用内联文章查看器单击之前,请参阅wikipedia文章

...好的方法来发现或避免关于一个伟大资源的信息。Wikipedia内联文章查看器是一个免费下载,可与Firefox和Greasemonkey扩展一起使用。维基百科内联文章查看器[Userscripts.org via Geeks Are Sexy]

  • 发布于 2021-07-30 17:52
  • 阅读 ( 67 )

html元素:块级(html elements: block-level)和内联元素(inline elements)的区别

...差异是构建web页面的一个重要步骤。 块级元素 那么什么是块级元素呢?块级元素是一个HTML元素,它从网页上的新行开始,并扩展其父元素可用水平空间的全部宽度。它会创建大量的内容块,如段落或页面分割。事实上,大...

  • 发布于 2021-09-04 22:28
  • 阅读 ( 177 )

什么是总装?(a final assembly?)

最终装配是制造过程中的最后一个阶段,产品的部件组装在一起并准备交付。无论是...

  • 发布于 2022-01-02 11:32
  • 阅读 ( 85 )

什么是自行车装配的最佳提示?(the best tips for bicycle assembly?)

由于不同类型的自行车具有不同的功能和机制,因此在尝试组装自行车之前,最好仔...

  • 发布于 2022-01-08 01:03
  • 阅读 ( 126 )

什么是自动装配?(automated assembly?)

自动化装配指的是一种使用自动化机械或装配机器人生产商品的方式,以及一种至少...

  • 发布于 2022-01-28 21:48
  • 阅读 ( 76 )