瀏覽單個文章
aric2003
Power Member
 

加入日期: May 2004
文章: 676
引用:
作者RogerShih
以我寫組合語言的經驗, 能用 32 位元加法的, 不會去用 16 位元的, 這點你去看 CPU 組合語言指令的執行時間就知道, 並不會比較慢, 因為指令的 Latency 是一樣的.

如果你執意要用較小位數的去做計算, 反而比較容易因為碰到溢位要做額外的處理而浪費更多時間.

請參考下面文件.
Software Optimization Guide for AMD Athlon™ 64 and AMD Opteron™ Processors
http://www.amd.com/us-en/assets/con..._docs/25112.PDF

PS: 什麼叫溢位?以 32 Bits 來說, 最大的無號數是 4G, 當你兩個 32 bits 數相加時, 如果是 3G+2G 這樣兩個數字相加, 就會超過 32Bits 最大的數值而造成溢位. 在寫組合語言時, 碰到這種情況就要檢查溢位旗標, 並把相加以後的數值利用另一個暫存器擴展存放, 這種情況會額外多花不少指令去處理, 資料結構、程式設計都要花費比較多的成本.


說的沒錯!同樣的一筆64bit的資料絕對是沒必要分兩次32bit去access.
 
__________________
Mother board: s2885
CPU: AMD opteron 244 x 2
SDRAM: SANMAX 512M ecc reg x 4
SCSI RAID CARD: SRCU42X x 1
SCSI RAID CARD: MegaRAID SCSI 320-4X x 1
HDD: st336753lc x 5
HDD: st336753lw x 1
HDD: mas3367nc x 2
HDD: map3147nc x 10
夢想配備: 無
舊 2005-07-08, 11:33 AM #142
回應時引用此文章
aric2003離線中