• <big id="yf5mt"><em id="yf5mt"></em></big>

    <pre id="yf5mt"></pre>
    1. <strike id="yf5mt"></strike>
    2. <center id="yf5mt"><em id="yf5mt"></em></center><code id="yf5mt"></code>
    3. <object id="yf5mt"><video id="yf5mt"></video></object>
      <pre id="yf5mt"><em id="yf5mt"></em></pre>
    4. <object id="yf5mt"><nobr id="yf5mt"><sub id="yf5mt"></sub></nobr></object>
    5. <code id="yf5mt"></code><pre id="yf5mt"><em id="yf5mt"></em></pre><object id="yf5mt"></object>
      <code id="yf5mt"></code>

      電工學習網

       找回密碼
       立即注冊

      學習匯編語言有什么好處?

      2020-3-19 18:08| 編輯:電工學習網| 查看: 1366| 評論: 0

      摘要: 這樣比喻吧:一個程序員,不懂匯編的閱讀和用于匯編級指令級的調試——這正如一個頂級的世界F1方程式賽車手,不懂得賽車的構造和運行,是不行的。匯編和C/C++在破解和加密解密中都是非常重要的,高級語言根本無法對 ...
      這樣比喻吧:一個程序員,不懂匯編的閱讀和用于匯編級指令級的調試——這正如一個頂級的世界F1方程式賽車手,不懂得賽車的構造和運行,是不行的。匯編和C/C++在破解和加密解密中都是非常重要的,高級語言根本無法對數據位進行操作,能操作數據位的只有匯編和C/C++,作者說的很詳細,用汽車來舉例也很貼切,我再舉一個例子,很多需要注冊的共享軟件需要獲取硬盤序列號,早期硬盤有專門的指令,現在的固態和機械硬盤早就不支持指令獲取了,高級語言遇到這個問題就抓瞎,目前我見過的獲取硬盤序列號的工具無一例外都是用匯編和C/C++寫的,區別在于匯編寫的程序更精簡,只需要1-2KB空間,C/C++寫的程序在十幾KB左右。

      學Java的可能會說,Java高端的很,不懂匯編沒關系——是的,你開轎車,在平整的公路上跑60碼,用自動檔,當然不需要知道轎車的內部結構是怎么樣的,離合器的工作本質是怎么樣的,在這樣的基礎下,你一樣可以把車開得很熟練。

      但有一天,你沒有一切都幫你搞定的轎車了,給你一輛有問題的車,你得自己修好它,才能逃離你當下的環境——比如你在沙漠里。

      你說匯編重不重要,看懂它——重不重要?學會匯編,學會的不僅是一種語言——還是學會了現代高級編程語言依賴運行的底層微機結構的原理本質。你說有什么好處?來跟我重復一遍:學會匯編,學會的不僅是一種語言——還是學會了現代高級編程語言依賴運行的底層微機結構的原理本質。

      學習匯編只是基礎,如果想要匯編可以有所作用,可以繼續研究:

      并不是說必須學了匯編才能理解操作系統,而是說看問題的深度不一樣。 有了匯編的保駕護航, 你可以在頭腦中建立起一個有更多細節,更多實現的計算機, 那些概念不是模糊的,而是清晰的、鮮活的。

      操作系統的運行原理, 絕對是程序員受益一生的知識。 比如說后端編程,不了解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屏幕,以及各種微電子系統,介于中級和高級之間。

      ·最讓人頭疼的內核問題可以一眼看出來問題所在并解決

      ·一般的匯編程序員大多數在這個水平

      高級(這一層的人就是大牛或是大牛中的大牛了,對自己所熟練的語言達到了駕輕熟就的地步,在電腦以及不同的,CPU運作方式方面達到了專家的級別)

      ·可以參與破解刷機各種手機系統,將手機系統玩弄于鼓掌之上的人

      ·參與最新智能系統的編寫(智能遙感,火箭以及飛機的操作系統),優秀的匯編高級工程師

      ·國家網絡安全局級別的大牛,類似震網病毒的破譯與安全測試

      ·自己寫出來系統在同行屬于出類拔萃。

      ·在匯編語言方面是不可多得的優秀的人才

      神仙級別(世界上萬里挑一,如果出來了會是一個國家的驕傲)

      ·獨自破解iphone,索尼,獨自研究編寫無人駕駛汽車系統的喬治霍期

      ·研究ATM機的CPU紋路走向和CPU對數據的處理方式的某黑客,,能達到破解ATM機系統對其遠程操控到自動吐鈔的地步(后來這個黑客被人暗殺了)

      ·編寫出一代ios系統的老喬

      ·參與編寫震網病毒的各路神仙。。。一次性能利用WINDOWS系統的20來個0day漏洞,程序的精巧度令人發指,幾行命令抵一般人幾頁命令

      學習匯報語言的目的不是像學習高級語言那樣。匯編是底層語言,學習它本身就有利于我們進一步了解底層計算機的運行。這對計算機的學習是個很基礎的要求。隨著現在越來越多高級語言的發展,不可否認為我們編寫提供了便利。但是匯編給我們帶來的卻是理解計算機。我覺得這很重要,學了匯編你才算知道了計算機是如何運轉的。

      學習匯編語言可以從最底層理解微機的工作原理,細微到一個狀態位放在哪一個存儲區,系統怎么輪詢,指令和數據之間如何互動,真正把電路邏輯和代碼內容銜接起來。然后再學到C,發現每一條C語言語句是這樣對應匯編的指令的,有一種能洞悉這塊芯片的所有秘密的感覺。

      看過《學習匯編語言有什么好處?》的人還看了以下文章:

      發表評論

      最新評論

      |電工學習網 ( )

      GMT+8, 2020-6-2 10:29

      Powered by © 2011-2020 wap.2007662.com 版權所有 免責聲明 不良信息舉報

      技術驅動未來! 電工學習網—專業電工基礎知識電工技術學習網站。

      欄目導航: 工控家園 | 三菱plc | 西門子plc | 歐姆龍plc | plc視頻教程

      返回頂部