看板 ASM 關於我們 聯絡資訊
請問各位, 我用 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)
ksmrt0123:舉個例, -9/4有兩種算法:(1)商2餘-1 (2)商3餘3 12/16 15:40
ksmrt0123:(1)叫 rounding toward zero, 你這段程式是這種 12/16 15:42
ksmrt0123:(2)為 rounding toward -∞, 直接算數右移是這種 12/16 15:44
ksmrt0123:訂正: 第一行 (1)商-2餘-1 (2)商-3餘3 12/16 15:48
感謝解答!!!! ※ 編輯: podd233f 來自: 59.115.149.170 (12/16 17:00)