首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >倒转寄存器拇指-2中的位

倒转寄存器拇指-2中的位
EN

Stack Overflow用户
提问于 2013-10-08 11:29:34
回答 2查看 3.5K关注 0票数 2

所以我的问题是,我虽然很简单,我有一个算法,但我似乎不能用拇指-2指令使它工作。

安利,我需要逆转r0的位数,我认为最简单的方法是逻辑上将数字右移到一个临时寄存器中,然后将剩下的数字转换到结果寄存器中。然而,LSL,LSR似乎不允许您存储丢失到最重要位或最不重要位的移位位(同时也转移该寄存器的位)。是否有什么教学内容让我失去了理解。

这是我的手臂参考:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Cjacbgca.html

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-08 12:17:17

如果使用C后缀("set标志“),移出的位可以复制到S位(进位标志)。RRX指令使用C设置结果的位31。所以你很可能会做这样的事情:

代码语言:javascript
复制
  ; 32 iterations
  MOV R2, #32
  ; init result
  MOV R1, #0
loop
  ; copy R0[31] into C and shift R0 to left
  LSLS R0, R0, #1
  ; shift R1 to right and copy C into R1[31]
  RRX  R1, R1
  ; decrement loop counter
  SUBS R2, #1
  BNE  loop
  ; copy result back to R0
  MOV R0, R1

请注意,这是一个非常缓慢的方式逆转比特。如果RBIT可用,您应该使用它,否则检查一些比特绕行技巧

票数 4
EN

Stack Overflow用户

发布于 2013-10-08 11:34:07

使用rbit指令如何?我复制的ARMARM显示它有一个拇指-2编码在ARMv6T2和更高版本.

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cihjgdid.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19246544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档