汇编作为一个古老的语言,除了特定领域比如嵌入式开发的boot loader部分以及做逆向及破解工程方面外,实际上基本上很少能接触的到。但是虫虫还是强烈建议所有搞CS和IT的同学一要学一些汇编知识,为什么呢? 理解计算机体系结构汇编可以让人你真正理解计算机体系结构,让你知道程序是怎么被硬件执行的? 内存是怎么用的,cpu怎么计算的,为什么你计算机的“1+1”就解决了我们现实中这么多的问题。 计算机一个典型的体系结构如下: 包括了cpu ,RAM内存、总线,其他组件,所有这些怎么和CPU打交道的呢? 其实上很简单,cpu只管从内存的特定地址去数据(指令)执行,然后返回给特定的地址,其他硬件也是存取特定地址的内存地址。 CPU都有特定的几个存储单元,叫寄存器(指令放进来,执行,然后还下一个指令),比如CS、DS、SS、ES、IP等,其中CS和IP是最重要的两个寄存器,CS:IP的地址表示的是当前CPU处理的指令。比如下面就是一个cpu执行的实例: 总之,CPU执行程序就是CS:IP给他喂什么内容他就执行什么内容,其他的他一律不管。 如何学习汇编语言虫虫建议的是不必要深入,起码的有知道,了解,比如上面提到那些执行过程,当然还有内存管理,学完了你就真正知道指针啊、栈啊、堆啊这些是怎么回事。 学习汇编语言,买一本书王爽老师的《汇编语言》,耐心地读下去,读懂就行了,一般没必要会用,会精通。 汇编能力层级:最后附带一个别人总结的汇编能力,如果有心对它做深造的可以研究下: 另外还有一本书,在学了王爽书以后,可以做为进阶用的。推荐《Assembly Language for x86 Processors 6th Edition》 |
|
来自: 昵称11935121 > 《未命名》