為什麼組合語言編出來的程式要比高階語言編出來的執行效率高

2022-01-10 22:33:13 字數 2538 閱讀 9086

1樓:匿名使用者

組合語言編譯後直接面對機器語言,演算法直接。高階語言能實現功能,但在內部執行時走彎路,所以時間慢。

2樓:

因為彙編可以直接操縱硬體,省略很多冗餘的指令,可以進行位操作,有些功能用高階語言實現起來很麻煩(不是指源**),尤其是那些不支援位操作的高階語言,而用匯編就很簡單了

當然,代價就是犧牲移植性

3樓:

高階語言**--->彙編**--->機器指令,通常的編譯軟體就是這麼一個流程,在編譯的過程中多少都會產生冗餘**,從而降低效率,你可以用c寫幾個最簡單的語句編譯後再用debug反編譯做比較就能看出來了

為什麼組合語言編出來的程式要比高階語言編出來的執行效率高

為什麼說用高階語言寫的程式,執行效率沒有彙編高?這些高階語言不都是要先編譯成組合語言嗎?

4樓:網海1書生

高階語言主要是給人看的,即使實現的目的完全相同,不同的程式設計師寫出來的高階語言都很可能會看起來完全不同,因此編譯器在把高階語言編譯為機器碼的過程中,就難免會產生很多的冗餘**,比如在組合語言中從a點到b點能夠一步到達的,在高階語言編譯的**中卻有可能滿世界亂轉把整個字母表都走一遭後才到達b,儘管結果看起來是一樣的,但效率就不可同日而語了。

當然了,像js之類的指令碼語言也是高階語言啊,它們是解析執行的,效率當然更加沒有組合語言高了。

5樓:杯具——悲劇

比如python是解釋性語言,執行同時編譯

高階語言和組合語言有什麼區別,哪一個的執行效率更高。

6樓:一嘆

1、可讀性:

高階語言可讀性、可維護性較佳,組合語言的可讀性較差。

2、程式的執行效率:

組合語言程式的佔用空間小,執行速度快,執行效率高,高階語言佔用的空間大,執行效率較低。

3、可維護性:

組合語言可維護性低很多,**複雜,針對性撰寫程式,可以得到速度快、穩定性高的結果。高階語言的可維護性較高。但是速度較慢,穩定性不高。

執行效率:組合語言編寫的源程式比高階語言編寫的源程式執行效率高。

擴充套件資料:

組合語言優缺點:

優點組合語言作為機器語言之上的第二代程式語言,它也有很多優點:

可以輕鬆地讀取儲存器狀態以及硬體i/o介面情況

編寫的**因為少了很多編譯的環節,可以能夠準確的被執行

作為一種低階語言,可擴充套件性很高

缺點因為**非常單調,特殊指令字元很少,所以造成了**的冗長以及編寫的困難

因為彙編仍然需要自己去呼叫儲存器儲存資料,很容易出現bug,而且除錯起來也不容易

就算完成了一個程式,後期維護時候也需要耗費大量的時間。

因為機器的特殊性造成了**相容性差的缺陷。

高階語言特點

高階程式語言作為一種通用的程式語言,它的語言結構和計算機本身的硬體以及指令系統無關,它的可閱讀性更強,能夠方便的表達程式的功能,更好的描述使用的演算法。

容易被初學者所掌握,很容易學習。而且容易學習掌握。

高階程式語言因為是一種編譯語言,所以他的執行速度比彙編程式要低,同時因為高階語言比較冗長,所以**的執行速度也要慢一些。

7樓:第一門徒

執行效率高不高是由**決定不是語言決定,高階語言和彙編最後都會編譯成機器碼,但問題在於在同樣的時間同樣的水平的程式設計師寫彙編效率會非常低,彙編實現的效率未必會比編譯器處理的高階語言效率高多少,在限定時間內寫的出**是比高階語言經過編譯後更垃圾的

8樓:葵久

組合語言執行效率高,因為高階語言需要先翻譯成計算機能夠識別的低階語言,而組合語言幾乎接近計算機的低階語言,不需要翻譯,所以組合語言處理的時間就短一些,效率就比高階語言高一點!

9樓:匿名使用者

高階語言可讀性、可維護性較佳;因為考慮到諸多因素,所以程式的佔用空間與執行速度 不如組合語言。另外一點,高階語言最終還是會被編譯成機器語言,這個過程都是

編譯程式完成,這中間隱含著不少未知因素,需要注意。

組合語言相對高階語言,可讀性、可維護性低很多;不過,針對性撰寫程式,可以得到

速度快、佔用空間小、穩定性高的結果。

假設,針對某一封閉環境撰寫程式,組合語言程式執行效率絕對高於高階語言!

下列關於計算機語言的說法中 正確的是 a 高階語言比組合語言跟高階,是因為它的程式執行效率更高。 5

10樓:匿名使用者

本來是過期問題,但實在看不下去了.正確答案是c.

a,彙編效率比高階語言要,所以a錯

b,組合語言依然被廣泛使用.

d,c++是物件導向的,c是程序導向的,c和c++是兩回事兒.

11樓:匿名使用者

a機器語言和組合語言是高階語言的基礎 所以a錯

容易移植排序 機器語言》組合語言》高階語言 b錯

c語言是一種程序導向的計算機程式設計語言。 d錯

組合語言中符號的意思是什麼,在組合語言裡 符號代表什麼意思?

看圖你就會明白。實際上標號x1的首地址為ascii碼c的字單元地址,x2的首地址開始於 db 16 dup 語句,緊接著x1的終止地址,那麼它的首地址相對於x1偏移4 1個位元組單元 x2的終止地址相對於其首地址偏移16 1個位元組單元,相對於x1偏移18個位元組單元。那麼 x1實際上是當前地址與x...

組合語言 底下的程式顯示cmp,0和test不正確為什麼啊這不是間接定址嗎

已經改過了,si 是暫存器間接定址,但是無變數名的暫存器變數定址屬於無型別量,後面的立即數也是無型別量,所以不符合語法規則,使用ptr偽指令即可修改。還有x屬於位元組型變數,所以不要和8000h比,和80h比就夠了,你不就是想驗證一下零的最高位是一還是零嗎?data segment x db 9,4...

組合語言的AX,BX,CX,DX,分別表示什麼

ax暫存器稱為累加器 accumulator 使用時主要用於存放資料,如存放算術 邏輯運算中的運算元或結果。也可臨時時用於存放地址。bx暫存器稱為基址暫存器 baseregister 常用來存放訪問儲存器時的地址。cx暫存器稱為計數暫存器 countregister 常用於儲存計算值,如在移位指令,...