2009-12-14 30 views
6

This article聲稱,每個寄存器有一個預期的目的,更重要的是,是否使用英特爾註冊其「預期目的」提高效率?

當英特爾的工程師設計 原來的8086處理器,他們 心目中的特殊用途爲每個 寄存器。由於他們設計的 指令集,他們創造了許多 優化和基於功能特殊說明 他們預計 每個寄存器執行。根據英特爾的 原始計劃使用 寄存器允許代碼充分​​利用這些優化的 。 不幸的是,這似乎是一個失落的 藝術。很少有程序員都知道英特爾的 整體設計,而大多數編譯器 過於簡單化或專注於 執行速度使用寄存器 正常。瞭解 寄存器和指令集如何適應 在一起,然而,是一個重要的步驟 路費力 大小編碼上。

是否有任何其他來源證實這篇文章?如果是這樣,我真的很想看看。

請注意,我不是在談論的情況下像STOS快速操作使用edi - 我只是想知道是否有任何性能下降,如果我使用eaxesi作爲計數器而不是ecx或者是它只是可讀性?

回答

4

不,不是真的了 - 或者至少不是很經常。使用ECX作爲計數器可以使用LOOP指令。有一次,這是一個顯着的優勢,但是對於大多數最新的CPU,LOOP執行所需的時間比DEC ECX/JNZ的任何組合都要長。可能的優點是它減少了內存帶寬的使用,這是一個越來越頻繁的瓶頸。當/如果你可以使用其他形式如LOOPNZ,這可能是一個優勢,這可能是相對複雜的模擬單獨的指令。

5

中有指令集的指令,其使用特定的寄存器,這是較小的(常常更快)比上述靶向任何寄存器中的等同的功能。

+2

最引人注目地提到AX與其他人。 – 2009-12-14 20:05:29