打印

ARM中除法要如何实现?

[复制链接]
3238|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
txcy|  楼主 | 2011-8-16 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
yoyowodeai| | 2011-8-17 21:40 | 只看该作者
这个得请教高人啊,明我帮你问问

使用特权

评论回复
板凳
athud| | 2011-8-18 10:17 | 只看该作者
不知道汇编

使用特权

评论回复
地板
delin17| | 2011-8-18 12:27 | 只看该作者
如果是底数是2^n方就用移位,否则去看一下除法算法。循环减法

使用特权

评论回复
5
X-Hawk| | 2011-8-18 13:49 | 只看该作者
拿C语言写个除法看,会发现编译器的行为:
尽量简单处理,例如移位可以解决的,当作移位处理。
不能简单处理的,除数和被除数放到r0, r1, 然后调用一个函数。
0x00000AE4 68A9      LDR      r1,[r5,#0x08]
0x00000AE6 68A0      LDR      r0,[r4,#0x08]
0x00000AE8 F000F842  BL.W     __aeabi_uidivmod (0x00000B70)

然后,楼主的问题就简单了。
汇编里,导入下__aeabi_uidivmod, 设定好r0, r1, BL到这个函数就完事了。

使用特权

评论回复
6
X-Hawk| | 2011-8-18 13:55 | 只看该作者
实际代码
                                IMPORT        __aeabi_uidivmod
                                LDR R0, =0xAABBCCDD
                                LDR R1, =0x00012345
                                BL     __aeabi_uidivmod
BL完成后,
    R0 为 0x0000960f (除法结果)
    R1 为 0x00004dd2(余数)

使用特权

评论回复
7
火箭球迷| | 2011-8-18 21:44 | 只看该作者
楼上正解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝