|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
为什么ARM的寄存器移位方式不支持算术左移和循环左移呢? |
作者:悠悠长风 栏目:ARM技术 |
看《ARM体系结构与编程》,上面讲到 数据处理指令的操作数的寻址方式,对于寄存器移位方式,只有 算术右移,逻辑左移,逻辑右移,循环右移,扩展循环右移,为什么没有算术左移和循环左移呢? |
2楼: | >>参与讨论 |
作者: 浪淘沙 于 2006/8/14 22:24:00 发布:
岂有此理,ARM的寄存器移位方式不支持算术左移和循环左移 算术左移和逻辑左移在逻辑上是没有分别的,不是吗? 循环左移,恩........,研究研究。 |
3楼: | >>参与讨论 |
作者: 肚里有史 于 2006/8/14 22:39:00 发布:
在ARM里不设置算术左移和循环左移是有道理的 算术左移与逻辑左移是等价的,都是向左移位,LSB用0填充。 循环右移可以一次性实现1~31位的移位操作。因此,循环左移n位(0<n<32),可以用循环右移32-n位来实现。 |
4楼: | >>参与讨论 |
作者: 悠悠长风 于 2006/8/14 23:22:00 发布:
谢谢大家积极解答 我原来做的都是比较上层的东西,现在想做些底层的开发。 所以很多东西都不懂,经常会提一些比较傻的问题。 楼上的两位的回答,我看了。 我只是奇怪,为什么ARM的数据处理指令不支持循环左移呢? 大概有点过分的追问了。 但是我觉得,这些事情都有原因的。 如果知道为什么,可能对于理解ARM有很大的帮助 |
5楼: | >>参与讨论 |
作者: 马甲啊马甲 于 2006/8/14 23:35:00 发布:
楼上不是有人回答了吗? [#FF0000]循环左移可以通过循环右移来实现[#/] 要知道,做条指令也不是一件简单的事情。好象在ARM中,移位是直接通过多路开关来选择的~~~~~~~是个开关矩阵,好象有32*32那么多个开关…… 32位的数循环左移16位,跟循环右移16位有什么区别吗?循环左移n位可以化成循环右移32-n位来实现。 |
6楼: | >>参与讨论 |
作者: 悠悠长风 于 2006/8/15 12:44:00 发布:
re 这下明白了 |
7楼: | >>参与讨论 |
作者: arm 于 2008/11/18 12:03:13 发布:
二进制数左移一位相当于原内容乘2,右移一位相当于原内容除以2。ARM具有完备的乘法指令,却没有除法指令。丰富的右移指令既能完成相应的逻辑操作,又能配合减法来做除法。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |