48、高级语言与汇编语言的接口

汇编与C/C++接口技术详解

高级语言与汇编语言的接口

1. 引言

多数程序员不会用汇编语言编写大规模应用程序,因为这太耗时。高级语言能隐藏一些细节,加快项目开发速度。不过,汇编语言仍广泛用于配置硬件设备以及优化程序的速度和代码大小。接下来将聚焦于汇编语言和高级编程语言之间的接口,先介绍如何在 C++ 中编写内联汇编代码,再讲解如何将独立的汇编语言模块链接到 C++ 程序,会给出保护模式和实地址模式下的示例,最后展示如何从汇编语言调用 C 和 C++ 函数。

2. 通用约定

从高级语言调用汇编语言程序时,有几个通用的注意事项:
- 命名约定 :指的是语言中变量和程序命名的规则。比如要考虑汇编器或编译器是否会改变目标文件中标识符的名称,以及如何改变。
- 段名 :汇编语言过程与高级语言程序链接时,段名必须兼容。这里使用 Microsoft 简化段指令 .CODE .STACK .DATA ,因为它们与 Microsoft C++ 编译器生成的段名兼容。
- 内存模型 :调用程序和被调用程序必须使用相同的内存模型。实地址模式下有小、中、紧凑、大、巨大等模型可选;保护模式下必须使用扁平模型。

2.1 调用约定

调用约定涉及程序调用的底层细节,需要考虑以下方面:
- 被调用程序必须保留哪些寄存器。
- 传递参数的方法,如寄存器传递、栈传递、共享内存传递等。
- 调用程序向程序传递参数的顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值