W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
原文鏈接:https://chai2010.cn/advanced-go-programming-book/ch3-asm/ch3-10-ext.html
如果是純粹學(xué)習(xí)匯編語言,則可以從《深入理解程序設(shè)計(jì):使用 Linux 匯編語言》開始,該書講述了如何以 C 語言的思維實(shí)現(xiàn)匯編程序。如果是學(xué)習(xí) X86 匯編,則可以從《匯編語言:基于 x86 處理器》開始,然后再結(jié)合《現(xiàn)代 x86 匯編語言程序設(shè)計(jì)》學(xué)習(xí) AVX 等高級匯編指令的使用。
Go 匯編語言的官方文檔非常匱乏。其中 “A Quick Guide to Go's Assembler” 是唯一的一篇系統(tǒng)講述 Go 匯編語言的官方文章,該文章中又引入了另外兩篇 Plan9 的文檔:A Manual for the Plan 9 assembler 和 Plan 9 C Compilers。Plan9 的兩篇文檔分別講述了匯編語言以及和匯編有關(guān)聯(lián)的 C 語言編譯器的細(xì)節(jié)??催^這幾篇文檔之后會對 Go 匯編語言有了一些模糊的概念,剩下的就是在實(shí)戰(zhàn)中通過代碼學(xué)習(xí)了。
Go 語言的編譯器和匯編器都帶了一個 -S
參數(shù),可以查看生成的最終目標(biāo)代碼。通過對比目標(biāo)代碼和原始的 Go 語言或 Go 匯編語言代碼的差異可以加深對底層實(shí)現(xiàn)的理解。同時(shí) Go 語言連接器的實(shí)現(xiàn)代碼也包含了很多相關(guān)的信息。Go 匯編語言是依托 Go 語言的語言,因此理解 Go 語言的工作原理是也是必要的。比較重要的部分是 Go 語言 runtime 和 reflect 包的實(shí)現(xiàn)原理。如果讀者了解 CGO 技術(shù),那么對 Go 匯編語言的學(xué)習(xí)也是一個巨大的幫助。最后是要了解
syscall 包是如何實(shí)現(xiàn)系統(tǒng)調(diào)用的。
得益于 Go 語言的設(shè)計(jì),Go 匯編語言的優(yōu)勢也非常明顯:跨操作系統(tǒng)、不同 CPU 之間的用法也非常相似、支持 C 語言預(yù)處理器、支持模塊。同時(shí) Go 匯編語言也存在很多不足:它不是一個獨(dú)立的語言,底層需要依賴 Go 語言甚至操作系統(tǒng);很多高級特性很難通過手工匯編完成。雖然 Go 語言官方盡量保持 Go 匯編語言簡單,但是匯編語言是一個比較大的話題,大到足以寫一本 Go 匯編語言的教程。本章的目的是讓大家對 Go 匯編語言簡單入門,在看到底層匯編代碼的時(shí)候不會一頭霧水,在某些遇到性能受限制的場合能夠通過
Go 匯編突破限制。
![]() | ![]() |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: