同一作業系統下,兩種高階語言的最終編譯CPU指令是否具有一致性?

時間 2021-05-05 14:56:16

1樓:何奈

其實這個問題不用過於專業的貼圖以及試驗證明。很簡單,即使是在同一作業系統,再嚴格一點,加上同一CPU下,同一種程式語言,在編譯時才用不同級別的編譯優化等級(如果開發環境支援編譯優化等級)所產生的機器碼都會有很大的不同,更不用說不同的程式語言下了。

即使是讓CPU做1+1這樣簡單的指令,各種開發環境或者編譯器都不一定會一樣的。不論實現方法,單說暫存器方面,這種編譯器會優先才使用這個通用暫存器,另外的編譯器可能才用別的通用暫存器,這你就很無奈是不是啊,哈哈。

要想一致,很簡單哦,用彙編用最原始的機器碼實現。直接跟CPU打交道,你的邏輯你的方法你的暫存器完全在你操控之下,這就是彙編的魅力。但你會發現太難了,寫個helloworld就想要死!

所以這就得出了我們使用高階語言的初衷,當硬體效能足夠高的時候,不必過於在意才用高階語言環境開發所造成的效率可能略低的影響(相比彙編機器語言),而讓軟體開發人員更關注於基於高階語言指令、API、庫等高階模組下的的複雜功能任務的實現,不必從事很痛苦的彙編開發,而且高階語言開發大多可以多平台發布,使開發人員擺脫硬體不同的某些困擾。

當然,你之所以問到底有沒有不同,可能是因為你在進行某些特殊任務的開發的時候,比如超高實時性,超高效能,需要硬體指令的高度一致,有這個需求才會提問,咱們本著從提問者的角度出發,做到問題引導而不是一味的解答。其實高階語言當中可以嵌入組合語言來解決你關心的問題哦,高階語言大多提供直接跟硬體打交道的方法,可以參考使用來達到你寫的指令就是CPU執行的指令的目的。

不然你單純性的問這個得到的指令一致不一致沒有太大意義。高階語言就是為了遮蔽這些不同而生的,為了更高效的進行複雜功能而生的。單純性的問這個問題是「返璞歸真」,但這個真已經不太具備實際價值了。

解答完畢!

2樓:

本來覺得是個好問題,但是看了問題的補充之後。。。

如果編譯之後出現CPU所支援的指令集之外的指令,那CPU還能執行麼?

所以,忽略這個被補充之後的傻問題,回到之前的好問題。對於這部分的回答是通常是不等價的。

原因很好解釋,不同的語言就像不同的人,你給他們看同一幅畫,然後讓他們寫文章描述他們所看到的,結果會得到不同的文章。雖然文章都是用中文寫的(如果規定用中文),字都是那些字(但是不同的人能夠使用的字的個數是不同的),但是組織方式不同。

如果畫越簡單,那麼相同或者類似的程度會越高;反之則越低。程式越大越複雜,不同語言編寫的程式差異越大;反之則比較類似。

3樓:海楓

通常是不一樣的。而且同一種語言不同編譯器,生成出來的彙編指令都不一樣的。

同乙個內容,古文和白話文完全不一樣,儘管都是漢字系統。

兩種不同環境有可能進化出同一種語言嗎

kuroneko 中國的語言在沒普及普通話之前也是各地區說各地區的啊。就像北方人聽不懂粵語,南方人聽不懂東北話。面對不同的環境,人的語言面對的物件與使用環境都是不同的,所以說,基本沒可能吧。可能會有相通之處,但是不會是一樣的。 齊家盛業 變數太多,沒辦法泛泛的回答!環境和語言都是變數,需要先界定一下...

用乙個bug很多的作業系統是種怎樣的體驗?

slick 不多說,點名Ubuntu。乙個相對較新的版本18.04LTS,只要軟體相容性稍有不對就全盤崩掉,開機不能 點名 MiniGUI開發環境 幸虧我的電腦是Ubuntu和UOS雙系統,可以使用UOS作為後備救援,把主系統Ubuntu重灌了一遍才弄好。在正常使用,平時勤公升級的前提下,一年半保證...

當對同乙個事件,兩種截然不同的系統都可以完美解釋的時候,應當怎麼辦

阿丘 乙個理論看起來完美,只是因為還沒發現它解釋不了的現實現象,就像牛頓力學解釋不了量子,基於人類觀察世界的手段,人類的理論終究只是一種範圍內的相對真理,在絕對真理面前,現有理論都可以看作理論假說 zgzfdxwll 想強答一下。我認為當我們起初看到乙個事物或者乙個事件的時候,會對這個事情有乙個表象...