arm指令移位指令

arm指令移位指令arm指令移位指令LSL逻辑左移ASL算术左移LSR逻辑右移ASR算术右移ROR循环右移RRX带扩展的循环右移ASL和LSL是等同的,可以自由互换。你可以用一个立即值(从0到31)指定移位数量,或用包含在0和31之间的一个值的寄存器指定移位数量。 逻辑或算术左移(LSL)MOVR1,#1

大家好,又见面了,我是你们的朋友全栈君。



arm指令移位指令


LSL 逻辑左移 ASL 算术左移 LSR 逻辑右移 ASR 算术右移 ROR 循环右移 RRX 带扩展的循环右移ASLLSL 是等同的,可以自由互换。

你可以用一个立即值(从 0 到 31)指定移位数量,或用包含在 0 和 31 之间的一个值的寄存器指定移位数量。

 

逻辑或算术左移(LSL)

MOV R1, #12

MOV R0, R1, LSL#2

                                    R0 是 48。 这些指令形成的总和是R0 = #12, LSL#2 等同于 BASIC 的 R0 = 12 << 2

  – – – – – – – – – – – – – – — – – – – — – 参考:

逻辑或算术左移

(Logical or ArithmeticShift Left)

  Rx, LSL #n    or
  Rx, ASL #n    or
  Rx, LSL Rn    or
  Rx, ASL Rn

接受 Rx 的内容并按用‘n’或在寄存器 Rn 中指定的数量向高有效位方向移位。最低有效位用零来填充。除了概念上的第 33 位(就是被移出的最小的那位)之外丢弃移出最左端的高位,如果逻辑类指令中 S 位被设置了,则此位将成为从桶式移位器退出时进位标志的值。

考虑下列:

  MOV    R1, #12
  MOV    R0, R1, LSL#2

在退出时,R0 是 48。 这些指令形成的总和是 R0 = #12, LSL#2 等同于 BASIC 的R0 = 12 << 2

 

逻辑右移

(Logical ShiftRight)

  Rx, LSR #n    or
  Rx, LSR Rn

它在概念上与左移相对。把所有位向更低有效位方向移动。如果逻辑类指令中 S 位被设置了,则把最后被移出最右端的那位放置到进位标志中。它同于 BASIC 的register = value >>> shift

 

算术右移

(Arithmetic ShiftRight)

  Rx, ASR #n    or
  Rx, ASR Rn

类似于 LSR,但使用要被移位的寄存器(Rx)的第 31 位的值来填充高位,用来保护补码表示中的符号。如果逻辑类指令中 S 位被设置了,则把最后被移出最右端的那位放置到进位标志中。它同于 BASIC 的register = value >> shift

 

循环右移

(Rotate Right)

  Rx, ROR #n    or
  Rx, ROR Rn

循环右移类似于逻辑右移,但是把从右侧移出去的位放置到左侧,如果逻辑类指令中 S 位被设置了,则同时放置到进位标志中,这就是位的‘循环’。一个移位量为 32 的操作将导致输出与输入完全一致,因为所有位都被移位了 32 个位置,又回到了开始时的位置!

 

带扩展的循环右移

(Rotate Right with extend)

  Rx, RRX

这是一个 ROR#0 操作,它向右移动一个位置 – 不同之处是,它使用处理器的进位标志来提供一个要被移位的 33 位的数量。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137693.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 考研复试-数据库面试题[通俗易懂]

    考研复试-数据库面试题[通俗易懂]准备复试时自己从别的博客上复制的一些面试题,因为当时都复制到一个文本文件中了,也不知道从谁的博客上复制的。触发器的作用?答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。什么是存储…

    2022年6月21日
    25
  • 清除计算机垃圾cmd命令,cmd清理垃圾命令代码是什么

    清除计算机垃圾cmd命令,cmd清理垃圾命令代码是什么类型:系统其它大小:21.5M语言:中文评分:10.0标签:立即下载电脑用久了是会堆积一些系统垃圾的,这类垃圾不好清理,很多小伙伴选择使用cmd清理垃圾命令代码来清理,cmd清理垃圾命令代码是什么,西西小编来为大家介绍。cmd清理垃圾命令代码是什么使用方法:新建一个文本文档,然后复制代码进去,保存,把保存的文本文档,后缀名txt修改成bat,确定,然后双击运行,它就会自动帮你清理了。代码:@ec…

    2022年6月18日
    28
  • 视频传输协议(常用的视频协议)

    SDP协议RTPRTCPSRTPRTP只负责传输数据包,需要与RTCP配合使用,由RTCP来保证RTP数据包的服务质量。每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12个字节的含义是固定的,而负载则可以是音频或者视频数据。整个IP报文由IP报头、UDP报头、RTP报头、RTPPayload(音频或视频数据)组成, IP协议最大传输单元(MTU)最大为1500字节,其中包括至少20字节的IP头、8字节的UDP头、12字节的RTP头, 这样,头信息

    2022年4月17日
    101
  • Linux系统-tcpdump常用抓包命令

    Linux系统-tcpdump常用抓包命令linux,tcpdump

    2022年5月21日
    53
  • Android面试题2019[通俗易懂]

    https://juejin.im/post/5c8211fee51d453a136e36b0#heading-56这个写的相当不错

    2022年4月10日
    45
  • 删除链表倒数第n个节点_求链表的倒数第m个元素

    删除链表倒数第n个节点_求链表的倒数第m个元素原题链接给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= s

    2022年8月8日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号