2012-06-20 62 views
2

與JMP,CALL,MOV,PUSH(我的意思是更多可用的命令)等其他彙編語句相比,說CMP是否需要更多時間才能運行?說「CMP命令是最長的彙編命令」是否正確?

+0

嗯......你從哪裏聽到的? – Mysticial

+1

請指定您正在討論的指令集架構(處理器)。跳轉會導致管道沖洗,這比比較簡單的alu命令(一個你不必保存答案的子文件)更加昂貴,推動會導致內存訪問(或更多),這可能會很慢。意思是更多可用的命令cmp命令不是一個很少使用的指令 –

+0

實際上沒有地方 – Mostafa

回答

-1

不,MOV可以花費最長的時間來運行,因爲一般來說它必須通過內存來執行移動(比寄存器訪問慢得多),並且可以被阻塞。另一方面,CMP通常在實踐中將文字和註冊作爲參數,並且僅命中ALU。

CALL實際上做了PUSH和JUMP,所以是第二長的。哦,是的,如前所述,JMP可以刷新管道(儘管無條件跳轉不會)。

底線CMP的速度很快,像INC,ADD或其他任何簡單的數學計算,它們經常被優化爲使用寄存器值和文字,並且除了打ALU之外沒有其他任何操作。

+0

謝謝你的時間。的確,我是C++程序員,總是試圖保持我的代碼清潔,在我腦海中的某些東西總是告訴我,如果!無論如何,你的回答非常有用 – Mostafa

+1

按照頻率,CPU花大部分時間完成「LOAD」,「CMP」 ,「JMP」。除非架構師調整了這些指令的最大性能,否則你的處理器速度不會很快......而且他們確實如此。 –