2012-07-02 33 views
0

我想將64位整數類型劃分爲32位,我將RVDS 4.1用作工具鏈。RVDS下的整數除法與Cortex-M0

Cortex-M0沒有硬件除數,所以我可以在下面執行操作嗎?如果是這樣如何?

unsigned long int b = 2590202; 
unsigned long long int a = 953502716552001ULL; 
unsigned long long int result; 
result = a/b; 

回答

1

編譯器將編譯除法操作,作爲執行軟件64位除法算法的庫子例程的調用。您可能還必須告訴編譯器與數學庫鏈接,我沒有專門針對RVDS的經驗。

爲什麼不自己編譯代碼,看看會發生什麼?嘗試拆解生成的機器代碼,看看它是如何工作的:它應該非常具有教育意義。

+1

RVDS通過使用固有庫函數在Cortex-M0上執行此操作,例如, 「__aeabi_uldivmod。」我拆開了然後我看到一個分支到這個函數來滿足除法運算符。 – albin