关于学习汇编的一些疑问

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:37:45
我学习了汇编,目前能做上一些基本的程序,如像选最大数,但是觉得这些太局限了,自己想拓展一下,请哪位高手指点一哈,谢谢

完全用asm做的项目太少了。除非是做嵌入式开发和反病毒,加密解密等领域
其实asm只是让你看的更细节一点。
其实楼主自己也知道,asm写代码是多么的繁琐
不是对运算要求特别高的代码一般不需要使用asm直接写。
而且你自己也未必能写出比编译器产生的代码还要高效的代码。
举个例子,invoke MessageBox,NULL,NULL,NULL,NULL
你自己写是这样
push 0
push 0
push 0
push 0
call MessageBox

编译器会直接生成更简单的
xor eax, eax
push eax
push eax
push eax
push eax
call [MessageBox]
如果遇到两次call [MessageBox]调用
会直接优化成lea esi, [MessageBox]
然后
push eax
push eax
push eax
push eax
call esi
.
.
.
.
call esi

看一下编译原理就可以发现现在的高级语言编译器都具有代码优化功能
而且经过这么多年的发展已经非常先进。一般如果你要优化的话
都是高级编译器产生优化代码后。再次进行手工优化。
自己写的函数未必会比编译器产生的有效率。尝试一下Intel Cpp编译器试试
汇编只是让你看的更细节,描述的更细节。
大部分时间也用不着全asm(除非你有asm写代码的爱好。其实许多人都有这样的爱好。:P~)
做工程的时候大部分是内嵌asm...

既然学了汇编了不熟悉反汇编有点说不过去。你可以挖掘别人的程序和软件的一些核心技术和实现方法。。。

如果想要有所突破建议看看这些方面的资料多去关于学习汇编的一点点疑问 关于汇编学习的问题 关于汇编中补码的一个疑问? 一些关于汇编的问题 汇编寻址的疑问 关于学习英语的一些疑问(真诚滴) 学习CAD的一些疑问 关于学习汇编 关于学习FLASH8的疑问 关于历史学习的疑问