2012-07-09 22 views
6

我注意到,當我用整數替換所有的字節實例時,我的nds應用程序工作得更快一些。所有的例子都會盡可能地把u8/u16實例放到網上。有一個具體的原因,爲什麼這是這種情況?爲什麼整數在NDS上的處理速度比字節快?

+0

你能舉一個具體的代碼示例嗎?我懷疑你看到的例子在結構中聲明瞭8/16位變量,而你將它們當作本地使用。 – 2012-07-09 19:27:57

回答

16

Nintendo DS使用的主處理器是ARM​​9,32位處理器。

參考http://en.wikipedia.org/wiki/ARM9

                                       

通常,CPU將在word sizes中執行操作,在本例中爲32位。根據您的操作,必須將字節轉換爲整數或反之亦然可能會給處理器帶來額外的壓力。這種轉換以及可能缺乏32位整數以外的值的指令可能會導致速度不足。

7

作爲Daniel Li所說的補充,ARM平臺上的存儲器訪問必須是字對齊的,即存儲器讀取次數必須是32位的倍數。從內存中提取一個字節變量意味着提取包含相關字節的整個字,並執行所需的按位操作,以使其適合處理器寄存器的最低有效位。

這些額外的指令是由編譯器自動發出的,因爲它知道變量的實際對齊。

相關問題