保护模式下C/C++与汇编语言的链接及优化
1. 内联汇编代码优化
在某些情况下,程序中频繁调用的函数可能会带来可观的执行时间开销。为了避免这种开销,可以将内联代码插入到调用函数的循环中,从而创建更高效的程序。以下是一个示例:
while (!infile.eof() )
{
infile.read(buffer, BUFSIZE );
count = infile.gcount();
__asm {
lea esi,buffer
mov ecx,count
mov al,encryptCode
L1:
xor [esi],al
inc esi
Loop L1
} // asm
outfile.write(buffer, count);
}
此程序可在相关文件夹中查看。
2. 保护模式下C/C++与汇编语言的链接
对于运行在保护模式下的x86处理器程序,有时会存在性能瓶颈,需要进行运行时效率优化。如果是嵌入式系统,还可能有严格的内存大小限制。为了实现这些目标,可以编写能被运行在保护模式下的C和C++程序调用的外部汇编语言过程。
2.1 参数传递
C/C++程序按参数列表从右到左的顺序传递参数。过程返回后,调用程序负责清理栈。可以通过给栈指针添加与参数大小相等的值,或者从栈中弹出足够数量的值来实现。
2.2 外部标识符
在汇编语言源文件中,使用
超级会员免费看
订阅专栏 解锁全文
15万+

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



