我为什么要学习汇编语言???

原创 2018年04月16日 23:14:33

我为什么要学习汇编语言

  今天写一篇有关于我认为的为什么要学习汇编语言的一点认识,不喜勿喷。仅仅代表作者自己工作这么多年的一点经验,不强加于任何人,如果觉得写得有道理,请点赞。
  工作了几年以后,掌握了基本的Java知识体系中的技术以后,就开始不满足于现有的深度,开始向着深度发展,然后开始看《Java虚拟机原理》,开始看得时候发现都能看得懂,然后越往后看越看不懂,比如什么栈帧、堆栈、堆等等很多的名词。虽然平时在编程过程中都遇到过,有一点模模糊糊的印象,但是不能从直观上有更深入的认识,那就是到底什么是栈帧、堆栈、堆等等这些问题吧。这本书看得无疾而终,永远趴在了角落中吃灰。
  直到有一天突然对破解小软件、写注册机感兴趣,于是在网上学习8086汇编语言中的基本的寄存器、指针、指令等等这些汇编中的东西吧。主要有EAX、EBX、ECX、EDX、EIP、ESP、EBP、MOV、ADD、MUL、XOR、RET等等等等数不清的指令还有寄存器,然后才从根本上知道了函数调用、参数传递、压栈、出栈等基本概念再去各个下载网站中下载一些需要注册的软件,或者需要输入验证码的软件,然后用ollydbg软件crack一下,进一步做出一个注册机,那种自豪感犹如马超见了刘备,“如拨云雾而睹青天”。从而知道了原来我们写出来的软件需要经过操作系统的一系列处理才能运行。
  但是最重要的收获是从汇编语言的角度了解了Java虚拟机中的栈帧是什么意思?其实就是以EBP基址指针与ESP之间堆栈都是当前的函数调用过程数据。对于数字由于占用空间小,直接保存到堆栈中,而对于大一点的复合体数据或者对象在堆栈中保存一个指针,然后把真正的对象保存在堆中,汇编语言中的堆与我们在程序中用到的“堆排序”的堆是两个完全不同的概念,这一点读者朋友一定不要搞混了,否则会让你越看越模糊。编译器中的堆相当于一个超大的数组,通过在堆栈中保存的指针,也就是索引值,可以在堆中实现快速存取,也能快速释放。
  看到了吧,学习一点汇编语言就能把《Java语言虚拟机》这本书完全看懂了,否则要是硬着头皮看下去,只会越陷越深。所以看到了吧?学习汇编语言再回头看《Java虚拟机》这样的书,简直就是小儿科了。所以现在要是有人跟我讨论Java虚拟机方面的知识,我都是建议他去看看汇编再来讨论,否则只能硬生生地背概念。
  也许有人说我没有学习过汇编语言照样工作了这么多年了,干嘛非要去学习这个作古的东西呢?说的对,也不对,如果满足于现状,或者每天只是在web开发,那么你完全可以无视这些东西,如果你想在计算机行业有更好的发展,我还是建议你去学习汇编语言。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bian_h_f612701198412/article/details/79967934

为什么要学习汇编语言

为什么要学习汇编语言 现在大部分的开发其实都不在需要汇编语言,甚至在单片机领域都不在用汇编语言编写程序,但是汇编语言在很多的人看来仍然是软件工程师所必需具备的能力。原因很多,就我理解应该有几个方面。 ...
  • markened
  • markened
  • 2014-03-17 22:42:28
  • 768

我为什么要学习JAVA?

      编程语言何其多:C/C++/VB/DEPHI……拿JAVA任何一个方面跟其它语言比较,都会有人反驳。那么,为什么还是要学JAVA呢?从我说起,我一开始在学校学习的是C++,用VC平台开发项...
  • li_tengfei
  • li_tengfei
  • 2010-02-23 16:29:00
  • 5697

N个为什么系列--1.为什么要学习数据结构?

很多刚学计算机的小伙伴一定会有这样的疑问(我也曾经困扰了许久),为什么要学习数据机构这门课啊? 不急,抛开这个问题,我们来看一个生动的例子: 我有一个盒子,里面有100个外形完全一样的小球(编号从...
  • u010976562
  • u010976562
  • 2018-01-20 17:53:59
  • 80

学习汇编语言的重要性

点击打开链接(学习汇编语言的重要性)         几日前,在一位仁兄的blog里看到如下一番话,其实我发现中国的教育还是有很大问题的。你们得让你们的学生认识到这门课的作用啊,有些师兄说到出去工作...
  • RichieVoe
  • RichieVoe
  • 2012-11-21 22:58:44
  • 5500

我为什么要学习Linux?

好长时间没好好写点东西了,前段时间由于项目的需要出差了一个多月,期间各种加班,每天晚上加班到十点,回到宾馆实现是没什么精力再写博客了。有时间能静下来写点东西总是很好的一件事,如果写技术方面的博客,不仅...
  • brave2211
  • brave2211
  • 2013-12-28 01:40:51
  • 13114

为什么你应该学习编程?

学习代码可以锐化思维 程序可能会工作,也可能不会工作。如果它不能正常工作,那么就意味着有需要分析和集中梳理的bug。但是不同于数学难题,即使你的解决方案是错误的,程序也根据代码会做一些意想不到的事情...
  • u011451577
  • u011451577
  • 2017-08-28 16:25:37
  • 7497

我们为什么选择计算机专业?为什么学习编程?

这是我的第一篇博客,分享一下我为什么要选择计算机专业以及为什么要学习编程。我和大部分同学一样都是通过高考进入大学学习,在没有步入大学前我也不知道计算机专业是干嘛的,更没有听说还有编程这样的东西。进入大...
  • Alex__Mahone
  • Alex__Mahone
  • 2017-03-01 10:10:17
  • 1688

我们为什么要学习JAVA?

有人说,JAVA已死,学JAVA还有前途吗?      真的是这样吗?       “JAVA已死”的论断从12年前就反复有人提,但是直到今天,JAVA毅然活着,2015年还荣登TIOBE指数的编...
  • LS1910831673
  • LS1910831673
  • 2016-11-04 19:26:29
  • 1327

为什么我要学习“机器学习”?

2017-02-08   在很早的博客里,我就提到过从13年底开始,就对Web开发不感兴趣,想要做更底层的开发。那时只有一个模糊的概念。认为越底层的知识、技能,越难,也就难以被替代,更保值。便研究...
  • cloudqiu
  • cloudqiu
  • 2017-10-25 16:20:41
  • 227

我为什么学习Python

在我的编程生涯中,Python给了我第二次热情。 第一次热情——编程之路的开始。         和不少人学过BASIC的人一样,我从小就接触到了编程,但是那时无论是研究小霸王学习机,还是在课...
  • mayao11
  • mayao11
  • 2015-11-12 16:13:13
  • 1605
收藏助手
不良信息举报
您举报文章:我为什么要学习汇编语言???
举报原因:
原因补充:

(最多只允许输入30个字)