如何正确学习汇编语言?
网友解答: 汇编语言本身很简单,常用指令没几个,语法规则也不多,看几个小时资料似乎就明白了,但其实不然。汇编的背后是体系结构,是程序设计抛开各种高层形态的最根本,最本质的解释。本人从业多
汇编语言本身很简单,常用指令没几个,语法规则也不多,看几个小时资料似乎就明白了,但其实不然。汇编的背后是体系结构,是程序设计抛开各种高层形态的最根本,最本质的解释。
本人从业多年,除了跟我一样搞过很久安全的同学,其余的没有一个我认为算是精通汇编。而我是怎么掌握汇编的呢 ?
1 早年用汇编手写病毒。比如处理指令重定位,是真的用汇编计算指令地址,push push call 实现函数调用。
2 长期病毒木马2进制分析。分析明白各种 malware 的原理,实现查杀防。个别病毒,需要实现修复。
3 漏洞挖掘。fuzzer 发现漏洞,汇编级详细分析,exploit 编写,武器化利用,一条龙。
4 各种逆向分析。好的东西没有代码,IDA 里看就是了。
5 跟debuger 做朋友。从来看不上print 方式的bug定位。所有问题在调试器里分析明白,绝不靠猜。
6 编译器后端研究。什么指令选择,指令调度,寄存器分配,全都研究一遍。
7 底层开发,操作系统,设备驱动,虚拟化都走上一遍。X86很熟? ARM学一遍做对比。
历经这么多,终于敢说学明白汇编了。
推荐如下的文档,很基础又相对全面的介绍了很多计算机常见问题在汇编层面的解释。
《Introduction to Computer Organization with x86-64 Assembly Language & GNU/Linux》
以上,希望对楼主有帮助
网友解答:本人从上世纪80年代就开始从事软硬件的编程,特别是经历了PC汇编和单片机汇编。
目前PC汇编肯定没人再搞了,因为在DOS时代,PC汇编(实际多用宏汇编)还大有用途,但在windows时代后,汇编就已经退出了舞台,只有反汇编搞逆向的人才使用和学习汇编和反汇编。
在单片机应用中,随着资源的扩大,像ARM芯片用汇编几乎不可能。
故在嵌入式领域,主要在小芯片的MCU上使用汇编,例如MVS51系列,PIC系列、AVR系列和DSP系列等。
当然也有搞各类汇编的,实际他们也是在搞反汇编,即搞逆向工程。
所以在这个年代想学习汇编的都是有故事的人……至少是听过故事的人!
本人精通51汇编和反汇编,如果需要,可以在网上搜索菜农的文章和帖子。