爱收集资源网

学习汇编,掌握底层微机结构

网络整理 2023-10-28 14:06

这样比喻吧:一个程序员,不懂汇编的阅读和用于汇编级指令级的调试——这正如一个顶尖的世界F1方程式赛车手,不懂得赛车的构造和运行,是不行的。

学Java的可能会说,Java高档的很,不懂汇编没关系——是的,你开货车,在平整的道路上跑60码,用自动档,当然不需要晓得货车的内部结构是怎么样的win32下的汇编程序设计,离合器的工作本质是怎么样的,在这样的基础下,你一样可以把车开得很熟练。

但有三天,你没有一切都帮你搞定的货车了,给你一辆有问题的车,你得自己修好它,才能逃出你当下的环境——比如你在荒漠里。

你说汇编重不重要,看懂它——重不重要?学会汇编,学会的除了是一种语言——还是学会了现代中级编程语言依赖运行的底层微机结构的原理本质。你说有哪些益处?来跟我重复一遍:学会汇编,学会的除了是一种语言——还是学会了现代中级编程语言依赖运行的底层微机结构的原理本质。

学习汇编只是基础,如果想要汇编可以有所作用,可以继续研究:

并不是说必须学了汇编能够理解操作系统,而是说看问题的深度不一样。 有了汇编的保驾护航, 你可以在脑子中构建起一个有更多细节,更多实现的计算机, 那些概念不是模糊的,而是清晰的、鲜活的。

操作系统的运行原理, 绝对是程序员受惠一生的知识。 比如说前端编程,不了解OS的进程、线程、 页面缓存,文件系统,I/O 就去大谈怎样实现一个高并发、大数据量的网站简直就是笑话。

再例如对JVM的学习, 如果你懂得汇编, 看到JVM的字节码、看到栈帧都会感觉很亲切,只须要把基于寄存器的估算方法转换成基于栈的估算方法就可以了。

我们的计算机知识如同一座金字塔, 底层是物理, 上面是数字电路,然后是汇编,再往上是操作系统、网络,数据库、高级编程语言、框架等等......

我们每位人不可能精通这个金子塔的每一层, 但是要把握、理解构成这个金字塔的核心概念。

在应用层编程, 不一定要把握汇编, 但是把握汇编能让我们更透彻的看待我们赖以为生的虚拟世界 , 没错, 你要想成为黑客帝国中的Neo, 汇编必须得学。

我有时候会胡思乱想: 如果这个编程世界根本没有哪些Java, Python, C++, Javascript , PHP, 只有汇编如此一种语言, 像 Rod Johnson(Spring之父), DHH(Ruby on Rail之父) , Eric Gamma (JUnit, Eclipse) , Gavin King(Hibernate之父) 这些在应用层编程的大牛们, 他们用汇编写程序会是哪些样子? 他们会创造出哪些东西下来?

我想有一点是肯定的: 即使是使用汇编,他们的编程技能依然会毫不留情的把我碾压成渣渣。 原因很简单, 一个驾驭过复杂系统的人,他的逻辑思维能力肯定是强大无比的, 汇编只是让他换了一个工具而已。

更可怕的是因为软件极难编撰, 只有一帮大牛才有资格编程,才能成为程序员, 像我这样资质平庸者恐怕只能去搬砖吧。

1.汇编语言 汇编语言是最接近于机器语言的编程语言。如果说机器语言是计算机操作的本质这么汇编语言就是最最接近本质的语言。汇编语言操作直接面向硬件。所以我们在使用汇编语言的时侯,我们就能感知计算机的运行过程和原理,从而就能对计算机硬件和应用程序之间的联系和交互产生一个清晰的认识。这也是最才能锻练编程者编程思维逻辑的,只有这样,学习者能够产生一个软、硬兼具的编程知识体系,这是任何高级语言都未能给与的,相对于繁复的高级语言,汇编语言指令集合更简洁,指令操作更直接,从汇编开始学习更符合循序渐进的学习原理。所以,对于计算机技术初学者或则自学者,汇编语言重要性无可替代

2.汇编语言之于高级语言,不证实在应用层面中级语言抢占了软件开发市场的绝大部分。也正是这些现象欺骗了学习者甚者是教育者,所以目前院校计算机专业的现况是,专业课程中C语言、C++、Java等高级语言一应俱全而结业的中学生却连简单的程序都不能编撰。为什么?听不懂、学不会。这就是缺少基础引起的。汇编语言才是计算机技术的基础,而不是常说的C语言。之所以说汇编重要,其一个重要的诱因就是,汇编语言才能让你更好的理解高级语言,尤其是高级语言中的C语言。汇编语言对于显存的操作都是基于内存地址的,而C语言中最令人头痛的表针概念,说白了就是显存的地址。指针的学习和应用中最头痛的就是在表针这个具象的概念和实际的内存单元之间构建思维映射,而这种恰恰是我们在汇编语言学习中频繁做的一件平常事。另外,对于C语言中的数据类型、形参左值、函数调用、全局变量、局部变量等概念及操作,我们都可以用汇编语言中的一些操作相关联把这种具象的概念和过程通过汇编语言产生一个具体的映像,深度分析这样我们能够真正的学会、学好C语言。

有了汇编和C的基础,那些所谓的面向对象的语言学习上去就更为顺畅了,奉劝这些好高骛远的学习者,踏踏实实的从汇编开始吧。古云:磨刀不误砍柴工啊!

3.汇编语言之于应用 很多学习者舍弃对于汇编语言的学习,是因为高级语言的开发更容易找到工作。这个理由也是我看到过的最现实的。但是,这上面显著存在着认识误区。首先,我们的学习是一个系统过程,我们的知识结构不是一个单一课程所才能构建的。所以,学习汇编的目的并不是非要用汇编去挣工钱。因为汇编语言对于一个编程人员所应当具备的基本素养的培养和产生得意义是极其重大的,这在前文中早已剖析了,不再赘言;其次,汇编本身也是很重要的应用技术。由于学习者,尤其是在校的中学生,平时接触的最多的是纯软件的东西。所以,觉得五花八门的软件才是计算机技术应用的舞台。那么那些人最终会成为这位博主提及的这些工作后才意识到汇编的作用的“师兄”。汇编的操作因为跟硬件紧密相关。所以,很多硬件设施的嵌入式编程使用的都是使用的汇编语言,因为汇编语言更直接、更有效率。我们现今的数码产品好多,而这种数码产品赖以生存的芯片、主板等。都包含了嵌入式程序,而这种程序中。汇编语言的使用是相当重要的。

偏硬件

低级(具有一定的汇编能力,能写出基本程序,基本的8086和win32都能看得懂)

·可以更改游戏数据

·可以破解收费软件

·可以自己写外挂(一刀999级不是梦)

·机子在跑高级语言的时侯可以优化分配显存

中级(可以自己编撰出比较中级的程序,开始专精汇编分支的某一种例如51单片机,ARM,X86,懂得硬件基本构造和计算机逻辑电路和CPU原理)

·可以自己编撰调试底层系统

·可以汇编/反汇编,可以进行病毒的编撰和调试和破译

·移动端系统底层/电子产品/硬件基本系统熟练于心,可以进阶成一个真正的电子极客了。

·黑客方面可以达到入侵心脏起搏器,学校的电子屏,ATM屏幕,以及各类微电子系统,介于高级和中级之间。

32汇编语言程序设计_win32下的汇编程序设计_win32汇编语言

·最让人头痛的内核问题可以一眼看下来问题所在并解决

·一般的汇编程序员大多数在这个水平

高级(这一层的人就是大牛或是大牛中的大牛了,对自己所熟练的语言达到了驾轻熟就的地步,在笔记本以及不同的,CPU运作形式方面达到了专家的级别)

·可以参与破解救砖各类手机系统,将手机系统耍弄于鼓掌之上的人

·参与最新智能系统的编撰(智能遥感win32下的汇编程序设计,火箭以及客机的操作系统),优秀的汇编高级工程师

·国家网路安全局级别的大牛,类似震网病毒的破译与安全测试

·自己写下来系统在同行属于出类拔萃。

·在汇编语言方面是不可多得的优秀的人才

神仙级别(世界上万里挑一,如果下来了会是一个国家的骄傲)

·独自破解iphone,索尼,独自研究编撰无人驾驶汽车系统的乔治霍期

·研究ATM机的CPU纹路迈向和CPU对数据的处理方法的某黑客,,能达到破解ATM机系统对其远程操控到手动吐钞的地步(后来这个黑客被人刺杀了)

·编写出一代ios系统的老乔

·参与编撰震网病毒的各路神仙。。。一次性能借助WINDOWS系统的20来个0day漏洞,程序的精巧度令人发指,几行命令抵一般人几页命令

学习汇报语言的目的不是像学习中级语言那样。汇编是底层语言,学习它本身就有利于我们进一步了解底层计算机的运行。这对计算机的学习是个很基础的要求。随着现今越来越多高级语言的发展,不可证实为我们编撰提供了便利。但是汇编给我们带来的却是理解计算机。我感觉这很重要,学了汇编你才算晓得了计算机是怎样运转的。

学习汇编语言可以从最底层理解微机的工作原理,细微到一个状态位置于哪一个储存区,系统怎样协程,指令和数据之间怎样互动,真正把电路逻辑和代码内容衔接上去。然后再学到C,发现每一条C语言句子是这样对应汇编的指令的,有一种能洞悉这块芯片的所有秘密的觉得。

win32下的汇编程序设
上一篇:打印机驱动出现叹号?原来是硬件问题 下一篇:没有了