高级语言与汇编语言的接口
1. 引言
多数程序员不会用汇编语言编写大规模应用程序,因为这太耗时。高级语言能隐藏一些细节,加快项目开发速度。不过,汇编语言仍广泛用于配置硬件设备以及优化程序的速度和代码大小。接下来将聚焦于汇编语言和高级编程语言之间的接口,先介绍如何在 C++ 中编写内联汇编代码,再讲解如何将独立的汇编语言模块链接到 C++ 程序,会给出保护模式和实地址模式下的示例,最后展示如何从汇编语言调用 C 和 C++ 函数。
2. 通用约定
从高级语言调用汇编语言程序时,有几个通用的注意事项:
- 命名约定 :指的是语言中变量和程序命名的规则。比如要考虑汇编器或编译器是否会改变目标文件中标识符的名称,以及如何改变。
- 段名 :汇编语言过程与高级语言程序链接时,段名必须兼容。这里使用 Microsoft 简化段指令 .CODE 、 .STACK 和 .DATA ,因为它们与 Microsoft C++ 编译器生成的段名兼容。
- 内存模型 :调用程序和被调用程序必须使用相同的内存模型。实地址模式下有小、中、紧凑、大、巨大等模型可选;保护模式下必须使用扁平模型。
2.1 调用约定
调用约定涉及程序调用的底层细节,需要考虑以下方面:
- 被调用程序必须保留哪些寄存器。
- 传递参数的方法,如寄存器传递、栈传递、共享内存传递等。
- 调用程序向程序传递参数的顺序。
汇编与C/C++接口技术详解
超级会员免费看
订阅专栏 解锁全文
6342

被折叠的 条评论
为什么被折叠?



