這是(AFAIK)this general topic中的一個特定問題。如何使用32位除法指令執行64位除法?
這裏的情況:
我有一個基於32位RISC微控制器的嵌入式系統(視頻遊戲控制檯)(NEC的V810的變體)。我想寫一個定點數學庫。我讀this article,但隨附的源代碼是用386彙編編寫的,所以它既不可直接使用也不易修改。
V810內置了整數乘法/除法,但我想使用上述文章中提到的18.14格式。這要求將一個64位整數除以一個32位整數,並且V810只做(有符號或無符號)32位/ 32位除法(產生一個32位商和一個32位餘數)。
所以,我的問題是:如何模擬一個32位/ 32位的64位/ 32位除法(以允許預先移動除數)?或者,從另一個角度來看待問題,使用標準32位算術/邏輯運算來劃分另一個18.14定點的最佳方法是什麼? (「最好」意思是最快,最小或兩者)。
代數,(V810)程序集和僞代碼都很好。我會打電話給代碼C.
在此先感謝!
編輯:不知何故我錯過了this question ...但是,它仍然需要一些修改才能超級高效(它必須比v810提供的浮點格更快,儘管它可能已經是.. ),所以請隨時爲我做我的工作以換取名譽點;)(當然,在我的圖書館文檔中還有信用)。
[32/16位除法處理器上的64/32位除法](https://stackoverflow.com/q/ 4771823/995714) – 2017-05-23 08:59:15