iOS安全攻防----匯編初識

匯編語言(assembly language):使用符號代替機器語言,也稱為符號語言,如:mov ax,bx。

平常我們使用的語言(C/C++/OC/Swift)都屬于高級語言,高級語言進入到計算機編譯的時候會變成匯編語言,而匯編再一次轉化才能成為真正的計算機語言(由0和1組成的機器指令)。過程如下圖所示:

匯編語言機器語言一一對應,每一條機器指令都有與之對應的匯編指令。

匯編語言可以通過編譯得到機器語言,機器語言可以通過反匯編得到匯編語言。

高級語言可以通過編譯得到匯編語言\機器語言,但匯編語言\機器語言幾乎不可能還原成高級語言。

匯編語言的特點

可以直接訪問、控制各種硬件設備,比如存儲器、CPU等,能最大限度地發(fā)揮硬件的功能

能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制

目標代碼簡短,占用內(nèi)存少,執(zhí)行速度快

匯編指令是機器指令的助記符,同機器指令一一對應。每一種CPU都有自己的機器指令集\匯編指令集,所以匯編語言不具備可移植性

知識點過多,開發(fā)者需要對CPU等硬件結構有所了解,不易于編寫、調試、維護

不區(qū)分大小寫,比如mov和MOV是一樣的

匯編語言的用途

編寫驅動程序、操作系統(tǒng)(比如Linux內(nèi)核的某些關鍵部分)

對性能要求極高的程序或者代碼片段,可與高級語言混合使用(內(nèi)聯(lián)匯編)

軟件安全

病毒分析與防治

逆向\加殼\脫殼\破解\外掛\免殺\加密解密\漏洞\黑客

理解整個計算機系統(tǒng)的最佳起點和最有效途徑

為編寫高效代碼打下基礎

弄清代碼的本質

函數(shù)的本質究竟是什么?

sizeof

++a + ++a + ++a 底層如何執(zhí)行的?

編譯器到底幫我們干了什么?

DEBUG模式和RELEASE模式有什么關鍵的地方被我們忽略

一句話概括:

越底層越單純!真正的程序員都需要了解的一門非常重要的語言,匯編!

匯編語言的種類

8086匯編(8086處理器是16bit的CPU)

Win32匯編

Win64匯編

ARM匯編(嵌入式、Mac、iOS)

.......

必要的常識

要想學好匯編,首先需要了解CPU等硬件結構

APP/程序的執(zhí)行過程如下圖:

硬件相關最為重要是CPU/內(nèi)存

在匯編中,大部分指令都是和CPU與內(nèi)存相關的

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容