保护模式下C/C++与汇编语言的链接及优化
在计算机编程中,为运行于保护模式下的x86处理器编写的程序有时会出现性能瓶颈,需要对其运行效率进行优化。同时,嵌入式系统可能对内存大小有严格限制。为了实现这些目标,我们将探讨如何编写能被运行于保护模式下的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++与汇编语言链接的基本要求
这类程序通常由至少两个模块组成:第一个模块用汇编语言编写,包含外部过程;第二个模块包含启动和结束程序的C/C++代码。C/C++的一些特定要求和特性会影响汇编代码的编写方式。
- 参数传递 :C/C++程序按参数列表从右到左的顺序传递参数。过程返回后,调用程序负责清理栈。可以通过
超级会员免费看
订阅专栏 解锁全文
7

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



