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 位的数量。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Adaptive Thresholding

    Adaptive Thresholdinghttp://homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htmAdaptiveThresholdingCommonNames: Adaptivethresholding,DynamicthresholdingBriefDescriptionThresholdingisusedtosegmenta

  • ResourceBundle用法[通俗易懂]

    ResourceBundle用法[通俗易懂]ResourceBundle用于解释资源文件。 1.新建一个.properties文件这里为:AccessMessages.properties例error=错误warn=警告放入工程下的en_US,目录结构如图  2.建立绑定关系[ResourceBundle("AccessMessages")]privatestaticvarrb:Resource…

  • flex垂直居中,最简单的方法之一

    flex垂直居中,最简单的方法之一display:flex;align-items:center;

  • WeakHashMap类

    WeakHashMap类一代码示例importjava.util.*;publicclassWeakHashMapTest{ publicstaticvoidmain(String[]args) { WeakHashMapwhm=newWeakHashMap(); //HashMapwhm=newHashMap(); //将WeakHashM…

  • fastjson注解有哪些(json的注释)

    阿里的fastJoson是一个非常好用的类,json转化的时候用到的jsonField特此记录一下fastjson之@JSONField注解的几个的使用详细示范好文2https://blog.csdn.net/u011425751/article/details/51219242…

  • 无线wifi-PJ-之在开启WPS下使用reaver

    无线wifi-PJ-之在开启WPS下使用reaverPJ简单解释:  PIN码分前4和后4,先破前4只有最多一万个组合,破后4中的前3只有一千个组合,一共就是一万一千个密码组合。10的4次方+10的3次方=11000个密码组合。  当reaver确定前4位PIN密码后,其任务进度数值将直接跳跃至90.9%以上,也就是说只剩余一千个密码组合了。总共一万一千个密码!—————————–

发表回复

您的电子邮箱地址不会被公开。

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