一段反汇编对应的C操作

RyderL 2018-03-08 05:09:38
在看一段反汇编代码的时候发现以下面这样一段代码,没看明白这是对应C中的一个什么的操作?
MOV R11, #0x6666667
MOV R0, xx
SMMUL R0, R0, R11
MOV R1, R0, ASR#6
ADD R0, R1, R0, LSR#31

这里的xx是一个数值
有大神指点一下吗?
...全文
574 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
呃... 这个确实看错了,LSR应该是逻辑右移。
zara 2018-03-09
  • 打赏
  • 举报
回复
“以乘代除”算法?搜索下这个看看它们的分析
RyderL 2018-03-09
  • 打赏
  • 举报
回复
刚拿数据测试了一下,这个和R0/160的结果是一致的~~但什么样的转换做到的这个?
RyderL 2018-03-09
  • 打赏
  • 举报
回复
引用 3 楼 DelphiGuy 的回复:
大致如此: int x = xx * 0x6666667; x = (x >> 6) + (x << 31);
int x = xx * 0x6666667; x = ((signed int)x >> 6) + (x >> 31); 应该是这样~ 但具体意义还是
引用 2 楼 zara 的回复:
“以乘代除”算法?搜索下这个看看它们的分析
这个更直观~
RyderL 2018-03-09
  • 打赏
  • 举报
回复
引用 2 楼 zara 的回复:
“以乘代除”算法?搜索下这个看看它们的分析
正解!! http://blog.csdn.net/hikaliv/article/details/4386721 这个有讲,之后我再验证一下~
  • 打赏
  • 举报
回复
大致如此: int x = xx * 0x6666667; x = (x >> 6) + (x << 31);

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧