废话:
大三老菜狗来更新啦,哎,感叹一下生活不易,天天犯困。记得去看书哦。其实在你学完前几期文章的时候你在去看其他人的开源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和同时使用可以分离出最低字节位数据。
2) andi和同时使用可以分离出最高字节位数据。
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位后空出的高位由原数最高比特位的符号扩展得到。