作者louisshih (老牧師4ni)
看板Programming
標題[問題] 組合語言ARM 不用MUL的乘法的問題
時間Thu Dec 22 11:25:28 2016
最近讀組合語言遇到一個問題
如何不用MUL讓一個暫存器裡面的數字乘上135或是-13
我知道可以用LSL乘上2的次方倍
有沒有大神可以幫小弟解惑
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.211.90
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Programming/M.1482377131.A.85A.html
1F:→ louisshih: 我剛剛有想到135=128+4+2+1 再利用ADD 223.136.211.90 12/22 11:36
2F:→ louisshih: 加起來 223.136.211.90 12/22 11:36
3F:推 CindyLinz: 這樣的確是啊.. 不過用這麼多個好嗎^^| 112.121.78.5 12/22 11:44
4F:→ louisshih: 不然樓上還有其他辦法嗎 223.136.211.90 12/22 11:53
5F:→ louisshih: 該不會用Loop吧? 223.136.211.90 12/22 12:04
6F:推 shadowjohn: 大學時寫的8051組語也作出四位元 140.134.48.253 12/22 13:18
7F:→ shadowjohn: 的加減乘除,乘我記得就累加N次 140.134.48.253 12/22 13:18
8F:→ shadowjohn: 是loop來作沒錯 140.134.48.253 12/22 13:18
9F:→ MOONRAKER: 128+4+2+1最少就是這麼少 不會更少了 60.248.110.133 12/22 13:44
10F:→ MOONRAKER: 也不過四次 用loop就變成135次 60.248.110.133 12/22 13:44
11F:推 CindyLinz: 可以用 128 + 8 - 1, 少一個 XD 112.121.78.5 12/22 15:16
12F:→ CindyLinz: 啊我不是說加四次不行啦.. 我只是想說 112.121.78.5 12/22 15:23
13F:→ CindyLinz: 四個加起來, 再加上若干 shiftL 112.121.78.5 12/22 15:23
14F:→ CindyLinz: 這樣還會不會比 MUL 快呢... @@" 112.121.78.5 12/22 15:23
15F:→ CoNsTaR: 減法好像平均比加法慢5倍左右? 114.33.205.79 12/22 16:19
16F:→ louisshih: ShiftL目前還沒學到 所以我不知道XD 223.136.211.90 12/22 16:41
17F:→ LPH66: 我只聽說過除比乘慢, 還沒聽說減比加慢的 140.112.30.32 12/22 17:55
18F:→ CindyLinz: 書上寫80386的加減要用 1/3 cycle 112.121.78.5 12/22 20:23
19F:→ CindyLinz: 乘好像是 20 cycle 左右, 除 40 的樣子 112.121.78.5 12/22 20:23
20F:→ CindyLinz: 可是乘除運算比較有進步空間.. 112.121.78.5 12/22 20:23
21F:→ CindyLinz: 我想在現代的 CPU 裡面乘除與加減的差 112.121.78.5 12/22 20:24
22F:→ CindyLinz: 距應該小很多了.. 但不知道還剩多少^^| 112.121.78.5 12/22 20:24