以我寫組合語言的經驗, 能用 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 最大的數值而造成溢位. 在寫組合語言時, 碰到這種情況就要檢查溢位旗標, 並把相加以後的數值利用另一個暫存器擴展存放, 這種情況會額外多花不少指令去處理, 資料結構、程式設計都要花費比較多的成本.