我覺得命題怪怪的.
DSP 的發明, 應該是針對訊號處理.
抱歉也有可能是我比較不熟這塊.
我的了解 DSP 應該的主要基礎之一就是 "Floating-point" 的加減乘除.
所以如果只是說, "除法的話", C 語言被 Compiler 編譯後, 有可能只是,
1, 2 個 DSP 指令, 你再怎麼用整數 ASM 兜也不可能比 HW FP 電路速度來得快.
另外用整數 ASM 兜, 又違反本來 DSP 的設計理念.....所以我覺得怪怪 der.
看你要最佳化的 C 是哪部分:
1) 一個C除式的, 組合語言的啓幕與落幕?
2) 一個演算法, 裡面有除法的?
※ 引述《mosquito520 ( )》之銘言:
: 我沒寫過DSP,所以那部份我沒辦法給建議
: 不過,用C寫的效率如果不好,用組合語言寫不見得就會比較好
: 除非你有把握你可以最佳化做得比compiler還要好XD
: 將除法改成"先求出除數的倒數,再和被除數相乘來達成"
: 首先就會碰到的問題是,你除數的倒數,精確度夠高嗎?
: 如果轉換成倒數的過程就損失了部分的精確度,相乘之後自然誤差會更大
: 建議你可以往兩個部分想看看
: 第一個是去網路上找找除法的演算法,簡單說,別人怎麼實現除法的?
: 第二個是你的除法的改善,因為你沒有提供數字,
: 所以我也不知道你是整數除法?還是浮點數除法?
: 一般來說整數除法會比浮點數除法的速度要快,
: 那你的資料有沒有可能先調整成整數去運算?最後再調整回原先的數值?
: 真想不出來,就把你的演算法瓶頸的部分貼上來
: 或許會有人給你一點建議:)
: ※ 引述《asdrtyjkl925 (阿斯拉)》之銘言:
: : 大家好
: : 小弟之前寫DSP,都是用C來寫
: : 但目前的CASE,用C的話執行速度不夠快,所以開始學用組合語言
: : 最近在除法上遇到了瓶頸
: : 我想到的除法的做法是:
: : 用RCPSP或RCPDP指令先求出除數的倒數,再和被除數相乘來達成
: : 但後來發現這兩個指令求出的倒數值,不是那麼精確
: : (和計算機按出來的答案有落差)
: : 所以想請教大大們 正確的除法該怎麼執行,謝謝:)
: : (ps.使用的DSP為C6748)