Golang構(gòu)建出來的匯編看起來很像AT&T的匯編語言,但是FUNCDATA,JLS這種指令我記得AT&T里面沒有見過啊。
我搜索了一下 https://studygolang.com/artic... 發(fā)現(xiàn)這里提到
Go的匯編語言基于Plan 9的匯編,Plan 9網(wǎng)站的頁面上有詳細(xì)描述。如果你想編寫匯編語言,你應(yīng)該讀這篇文檔,雖然它是Plan
9相關(guān)的。這邊文檔總結(jié)了匯編的語法,并且描述了使用匯編語言和Go程序交互時的特殊之處。有一點是很重要的是,Go的匯編中沒有直接體現(xiàn)出底層的機器。有些匯編細(xì)節(jié)能直接對應(yīng)到機器,但有些不是。這是因為編譯器套件在常規(guī)過程中不需要匯編語言。取而代之的是,編譯器產(chǎn)生二進(jìn)制的不完整的匯編指令集,鏈接器會完成它。實際上,鏈接器做了匯編指令的選擇,所以當(dāng)你看到類似于MOV這樣的指令,鏈接器的實際操作可能不是一個移動指令,也許是清除或者載入?;蛘呖赡軙鶕?jù)指令的名字對應(yīng)到真實的機器指令??傮w上,機器相關(guān)的指令操作趨向于體現(xiàn)出真實的機器指令,但是一些通用的概念類似于移動內(nèi)存數(shù)據(jù)、調(diào)用子例程、返回等操作就更抽象了。具體的細(xì)節(jié)和架構(gòu)相關(guān),我們?yōu)檫@種不精確性道歉。
匯編程序是生成中間碼的一種方法,未完整定義的指令集作為鏈接器的輸入。
如果你想看到特定CPU架構(gòu)下的匯編指令集,如amd64,在Go標(biāo)準(zhǔn)庫的源文件中就有許多例子,在runtime和math/big包中。
請問一下他為什么不直接編譯成本地平臺的匯編呢?
這和Java的字節(jié)碼,以及JIT之類的技術(shù)有什么關(guān)聯(lián)嗎?
go tool compile -S test.golang
"".main t=1 size=336 value=0 args=0x0 locals=0x98
0x0000 00000 (test.go:7) TEXT "".main(SB), $152-0
0x0000 00000 (test.go:7) MOVQ (TLS), CX
0x0009 00009 (test.go:7) LEAQ -24(SP), AX
0x000e 00014 (test.go:7) CMPQ AX, 16(CX)
0x0012 00018 (test.go:7) JLS 320
0x0018 00024 (test.go:7) SUBQ $152, SP
0x001f 00031 (test.go:7) FUNCDATA $0, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB)
0x001f 00031 (test.go:7) FUNCDATA $1, gclocals·6e96661712a005168eba4ed6774db961(SB)
0x001f 00031 (test.go:8) LEAQ type.[1]int(SB), BX
0x0026 00038 (test.go:8) MOVQ BX, (SP)
0x002a 00042 (test.go:8) PCDATA $0, $0
0x002a 00042 (test.go:8) CALL runtime.newobject(SB)
0x002f 00047 (test.go:8) MOVQ 8(SP), AX
0x0034 00052 (test.go:9) CMPQ AX, $0
0x0038 00056 (test.go:9) JEQ $1, 313
0x003e 00062 (test.go:9) MOVQ $1, DX
0x0045 00069 (test.go:9) MOVQ $1, CX
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。