我一直在尝试学习来自MIPS的RISC-V,最初它们看起来并不是不同的,特别是指令集。这两者之间有什么显著的区别吗?后端的大部分区别是吗?
发布于 2021-11-05 08:07:12
根据Patterson,D.A.,& Hennessy,J.L. (2018)第2.16节。计算机组织与设计:硬件/软件接口。马里兰州剑桥:摩根·考夫曼出版社。(RISC-V版):
是RISC-V和MIPS的主要区别之一,它适用于条件分支,而不是等于或不相等。RISC-V只是提供分支指令来比较两个寄存器,而MIPS依赖于一个比较指令,它根据比较是否为真而将寄存器设置为0或1。然后,程序员遵循该比较指令,其分支等于或不等于零,这取决于所期望的比较结果。按照其极简主义哲学,MIPS只执行比比较更少的操作数,由程序员来切换操作数的顺序或切换分支测试的条件,以获得所有期望的结果。MIPS在小于指令( slt和sltu )的情况下,对set进行了签名和未签名。
当我们超越最常用的核心指令时,另一个主要的区别是完整的MIPS是一个比RISC-V大得多的指令集。
书中的图2.29显示了MIPS和RISC-V在教学格式上的细微差别:

发布于 2022-03-27 12:03:59
我想补充的一点是,与MIPS中的上16位相比,RISC-V的即时指令使用上20位。
例如,在MIPS中:
lui S0, 0x1234
S0 = 0x1234 0000在RISC-V中,它的S0 = 0x0123 4000
https://stackoverflow.com/questions/67464262
复制相似问题