在C++中内嵌汇编代码分析 用JAVA 或者Python 的人常常会告诉你,现在的硬件已经太快了,以至于你可以完全不再考虑性能,快速的开发才是最最重要的
这是个速食者的年代,什么都是,甚至是编程
永远有但是,任何 C/C++程序员在工作一段时间后都会发现,不关心性能的C/C++程序员是干不下去的
C 语言的程序员犹甚,C++的程序员也许还可以光靠着 MFC 等类库混口饭吃
C/C++程序员常常会发现自己只有有限的内存,要占用更小的CPU 资源(或者仅仅只有速度非常有限的嵌入式 CPU 可用),但是却得完成非常复杂的任务,这时候能够利用的工具却非常有限
唯一可能有用的就是自己的大脑
呵呵,改进算法永远是最重要的,但是一个非常优秀的算法也没有办法满足要求的时候,你再剩下的东西可能就是无限的优化原有的C/C++代码,接着就是汇编了
这里从内嵌汇编将起,然后讲讲用MASM 独立编译,然后链接的方法,都以VS2005 为例子,其他编译器请参考
内嵌汇编: 内嵌汇编的使用是很简单并且方便的,在VS 中以的形式就可以简单的使用
对于此语法我没有必要再多说了,各类资料都有介绍,可以参考参考《加密与解密》(第 3 版)附录 2
这里想举几个的函数的调用例子来说明一下,因为在函数调用时需要特别注意调用的约定,各类调用约定有不同的规矩需要留意,因为一旦使用了汇编,出现问题没有东西可以保护你,唯一可以看到的就是程序崩溃
对于各类调用约定也可以参考《加密与解密》(第 3 版),其中的分类还比较详细
我在《 反汇编时的函数识别及各函数调用约定的汇编代码分析》,《 C++中通过指针,引用方式做返回值的汇编代码分析》中也有一些实例的分析,但是不能代替完整的说明,仅供参考
以下形式就是最方便的内嵌汇编用法: __asm { } 例 1: // 仅仅返回参数