[問題] ARM-算數移位的問題

看板ASM (組合語言)作者 (航)時間14年前 (2010/12/15 23:01), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串1/1
請問各位, 我用 arm編譯器 編譯出 c語言的a/4, 我有加 最佳化的參數去跑。 結果如下: add r3, r0, #3 @ tmp105, a, cmp r0, #0 @ a, movlt r0, r3 @ a, tmp105 mov r0, r0, asr #2 @ <result>, a, 如果 a 是正數 的話我懂, 但如果 a是負數,為什麼還要加三再右移呢?? 想很久還是搞不懂.. 煩請高手們解惑,謝謝!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.148.160 ※ 編輯: podd233f 來自: 59.115.148.160 (12/15 23:03)

12/16 15:40, , 1F
舉個例, -9/4有兩種算法:(1)商2餘-1 (2)商3餘3
12/16 15:40, 1F

12/16 15:42, , 2F
(1)叫 rounding toward zero, 你這段程式是這種
12/16 15:42, 2F

12/16 15:44, , 3F
(2)為 rounding toward -∞, 直接算數右移是這種
12/16 15:44, 3F

12/16 15:48, , 4F
訂正: 第一行 (1)商-2餘-1 (2)商-3餘3
12/16 15:48, 4F
感謝解答!!!! ※ 編輯: podd233f 來自: 59.115.149.170 (12/16 17:00)
文章代碼(AID): #1D2DXQy8 (ASM)
文章代碼(AID): #1D2DXQy8 (ASM)