RISC-V汇编学习笔记(四):RISC-V汇编语言和逻辑运算指令

废话:

大三老菜狗来更新啦,哎,感叹一下生活不易,天天犯困。记得去看书哦。其实在你学完前几期文章的时候你在去看其他人的开源RISC-V的设计思路,你会发现其实你已经能看懂一些了。

  

注释:

RISC-V汇编学习笔记系列是RISC-V学习笔记系列下的一个分支,在这里着重讲解的是RISC-V的汇编指令是如何实现的。对读懂RISC-V有一定的帮助,但因为不是主线剧情所以会更加随意一点。

逻辑运算指令:

1.逻辑运算 指令用于对一个字数据中的比特位进行操作

                                 in C                                in RISC-V

                                 操作                                  指令

     按位与                    &                                     and

     按位或                    |                                       or

     按位异或                ^                                     xor

     逻辑左移              <<                                     sll

     逻辑右移              >>                                    srl

     and         x5,  x6,  x7                # x5 = x6 & x7,数电学了吧,与运算

     andi        x5,  x6,   3                 # x5 = x6 & 3

2.掩码操作   

1) andi和0000 00FF_{hex}同时使用可以分离出最低字节位数据。

2) andi和FF000000_{hex}同时使用可以分离出最高字节位数据。

3.在RISC-V指令集中没有专门的逻辑非指令使用逻辑异或指令xor与0x1111_1111按位异或即可得到逻辑非得结果。在RSIC-C中可以使用异或指令来实现逻辑非,而不设非指令,这也对应了RISC-V指令集的设计原则:简洁快速

1.逻辑左移:

slli    x11, x12,  2        # x11 = x12 << 2

操作前:0000 0002 (16进制) ——> 0000 0000 0000 0000 0000 0000 0000 0010 (2进制数)

操作后:0000 0008 (16进制) ——> 0000 0000 0000 0000 0000 0000 0000 1000 (2进制数)

注释:其他移位用法类似

2.算数右移(寄存器型sra、立即数srai)

当对操作数执行算术右移n位后空出的高位由原数最高比特位的符号扩展得到。 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值