高级语言接口:内联汇编代码与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 /*
超级会员免费看
订阅专栏 解锁全文
1

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



