我有點困惑組裝。像GCC這樣的編譯器有什麼樣的組合,以及它如何確定要生成的組件?這些類型的裝配有多大不同,這是一個巨大的差異,還是不明顯?今天有多少類型的裝配被廣泛使用?裝配什麼目標
裝配什麼目標
回答
像GCC目標這樣的編譯器是什麼類型的程序集,它是如何找出需要生成什麼程序集的?
每個CPU家族(架構)具有不同的組裝和GCC是建立支持許多CPU的家庭。您可以將參數傳遞給GCC以指示您想要的目標體系結構(如果您正在編譯與您編譯的體系結構不同的體系結構,則此參數被稱爲cross-compiling)。
這些類型的裝配有多大的差異,這是一個巨大的差異, 或不明顯?
通常每個架構是完全不同的,並與他人完全不兼容。
有多少種組合的今天被廣泛使用?
這裏列出的太多了,但目前最廣泛使用的體系結構是用於移動/嵌入式設備的PC,ARM(以及更小程度的MIPS)的Intel x86和x86-64。更簡單和更小的設備可以使用微控制器而不是全功能的CPU。
因此,所有的現代英特爾處理器,他們是否經常或很少更改語言 ?
取決於。通常,製造商試圖保持與舊型號的兼容性,儘管他們也可以決定將其打破(即Intel's IA-64體系結構)。
而且是爲什麼一些二進制文件有什麼-I386等前綴,是 的那種處理器集/類型/事它支持?
是的。它被稱爲「架構」。
太棒了!所以當Go說它支持「amd64(a.k.a. x86-64); 6g,6l,6c,6a」時,這意味着什麼? amd64是一種類型的程序集,還是很多類別的程序? – 2015-03-31 09:48:26
amd64是x86-64體系結構的另一個名稱,因爲它是由AMD設計的。它是英特爾x86架構的兼容64位擴展的擴展。我建議你談論架構,而不是組裝,它更正確:) – m0skit0 2015-03-31 09:51:12
好吧! :)謝謝,還有1個哈哈,我怎麼知道我在自己的建築? – 2015-03-31 09:53:00
- 1. 什麼是裝配用戶標誌?
- 2. 什麼匹配模式// *目標?
- 3. @在裝配中做什麼?
- 4. 什麼是裝配EnvDTE 8.0.0.0?
- 5. 什麼是裝配班?
- 6. 什麼@目標C
- 7. 什麼是開源(LGPL)項目的適當裝配屬性值?
- 8. 目標「_help」做什麼?
- 9. 什麼是Makefile目標`.c.o`?
- 10. 什麼用的@目標C
- 11. EnsureNuGetPackageBuildImports目標是什麼?
- 12. 爲什麼@目標C
- 13. ObjectMapper的目標是什麼?
- 14. 什麼是「制定目標」?
- 15. Xcode 4目標版本設置「跳過安裝」。它是什麼?
- 16. OSX安裝程序中的目標參數含義是什麼?
- 17. 爲什麼OwinStartupAttribute在裝配層面?
- 18. 爲什麼自動裝配bean爲空?
- 19. 裝配類型 - 有什麼區別
- 20. 在裝配中strcpy是什麼意思?
- 21. 什麼是「MOVOU」意味着golang裝配
- 22. ESP在裝配中意味着什麼?
- 23. '裝配煉獄'會發生什麼?
- 24. 這在裝配中有什麼作用
- 25. :操作員在裝配中做什麼?
- 26. 爲什麼裝配仍然可見?
- 27. 目標和項目有什麼區別?
- 28. 什麼標誌你建議在MSVC項目發佈配置
- 29. 這是什麼裝配,它爲什麼在那裏?
- 30. 裝配需要什麼?爲什麼我們使用它們?
彙編語言幾乎是CPU的「原生」的語言,而每個CPU類型有其自己的彙編語言。像GCC這樣的高級編譯器有很多代碼生成器來爲所有不同的支持CPU架構生成代碼。如何GCC知道選擇哪個目標?因爲在構建編譯器時有人設置了*主機*(這是您正在構建的系統)和*目標*(這是目標系統的代碼將生成的目標主機和目標可以是相同的) – 2015-03-31 09:35:38
因此,所有的現代Intel處理器,難道他們改變自己的語言的事情經常或很少呢,是爲什麼一些二進制文件有什麼-I386等前綴,是那種處理器集/類型/事,它支持? – 2015-03-31 09:36:31
的組裝主流處理器的英特爾範圍一直只是因爲[8086](http://en.wikipedia.org/wiki/Intel_8086),還有剛剛被添加。還要注意的是對現代英特爾處理器的更多說明,裝配相同語言實際上並不是一個一對一映射到CPU內核像以前一樣執行的實際指令。相反,內核將彙編指令翻譯爲其實際的本地指令集。 – 2015-03-31 09:40:40