51、高级语言接口:内联汇编代码与32位汇编语言代码链接

高级语言接口:内联汇编代码与32位汇编语言代码链接

1. 内联汇编代码基础

1.1 内联汇编代码概述

内联汇编代码是直接插入到高级语言程序中的汇编语言源代码,大多数C和C++编译器都支持该特性。在32位保护模式和扁平内存模型下的Microsoft Visual C++中,内联汇编代码是编写外部模块汇编代码的简单替代方案。其优点是简单,无需考虑外部链接问题、命名问题和参数传递协议;缺点是缺乏可移植性,当高级语言程序需要为不同目标平台编译时,会产生问题,不过可通过在程序源代码中插入条件定义来解决部分问题,但维护仍有困难。

1.2 __asm指令

在Visual C++中,__asm指令可放在单条语句开头,也可标记汇编语言语句块(asm块)的开始,语法如下:

__asm  statement
__asm {
  statement-1
  statement-2
  ...
  statement-n
}

注意,“asm”前有两个下划线字符。

1.3 注释

asm块中的任何语句后都可添加注释,可使用汇编语言语法或C/C++语法。Visual C++手册建议避免使用汇编风格的注释,因为它们可能会干扰C宏。示例如下:

mov  esi,buf     ; initialize index register
mov  esi,buf    // initialize index register
mov  esi,buf    /* 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值