自学内容网 自学内容网

指令:计算机的语言(六)

2.10 对大立即数的RISC-V编址和寻址

虽然将所有RISC-V指令保持32位长可以简化硬件,但有时候使用32位更大的常数或地址会很方便。

2.10.1 大立即数

取立即数高位(lui,load upper immediate):将20位常数加载到寄存器31位到第12位,右边12位全部用0填充。

这条指令允许两条指令创建32位常量。lui是新的指令格式--U型,其他格式不能支持如此大的常量。

例题:加载一个32位常数

将以下32位常量加载到寄存器x19的RISC-V汇编代码是什么?

00000000 00111101 00000101 00000000

答案

lui x19, 976 //用lui加载12到31位,十进制976, 0000 0000 0011 1101 0000 //寄存器x19的值为 00000000 00111101 00000000 00000000 addi x19, x19, 1280 //添加最低12位,十进制1280,0101 00000000 //寄存器x19中的最终值是 00000000 00111101 00000101 00000000

详细阐述

上面例子中,常量的第11位为0,如果11位已经设为1,则会出现额外的复杂情况:12位立即数是符号拓展的,因此加数将为负数。

这意味着除了添加常量的最右边11位之外,我们还需要减去2的12次方,为了弥补这个错误,只需要将lui加载常量添加一个1,因为lui常量缩小了2的12次方倍。

硬件/软件接口

编译器或汇编程序必须将大的常量分解为多个部分,然后将他们重新组装到寄存器中。正如你所料,对于加载和存储指令中的常量来说,立即数字段的大小限制是一个问题。RISC-V机器语言的符号表示不再受硬件限制,而是受限于汇编程序的构建者选择包含的内容。我们坚持以靠近硬件层次的方式来解释计算机的体系结构,注意,当我们使用汇编程序的拓展语言时,在实际处理器的实现中是找不到的。

2.10.2 分支中的寻址

RISC-V分支指令使用带有12位立即数的RISC-V指令格式。这种格式可以表示从-4096-4094的分支地址,以2的倍数表示,由于最近的一些原因,它只能跳转到偶数地址。SB型格式包括一个7位操作码,一个3位功能码,两个5位的寄存器操作数(rs1和rs2)和一个12位地址立即数。该地址使用特殊的编码方式,简化了数据通路设计,但使组装变得复杂。

bne x10, x11, 2000 //如果if x10!=x11,去内存位置2000的地方 0111 1101 0000

未完待续。。。

PC相对寻址:一种寻址方式,它的地址是PC和指令中的常量之和。

2.10.3 RISC-V寻址模式总结

寻址模式:根据操作数的地址使用的不同,在多种寻址方式中加以区分的寻址基址。

  • 立即数寻址,操作数是指令本身的常量。
  • 寄存器寻址,操作数在寄存器中。
  • 基址或偏移寻址,操作数在内存中,其地址是寄存器和指令中的常量之和。
  • PC相对寻址,分支地址是PC和指令中常量之和。

2.10.4 机器语言译码

有时必须通过逆向工程将机器语言恢复到初始的汇编语言。例如发生内存转储(core dump)时。

下图有助于汇编语言和机器语言之间进行手动翻译。

案例待续。。。

2.11 并行性与指令:同步

当任务之间相互独立时,并行执行更为容易,但通常任务之间需要协作。协作通常意味着一些任务正在写入其他任务必须读取的值。

数据竞争(data race):如果来自两个不同的线程的访问请求访问同一个位置,至少有一个是写,且连续出现,那么这两次存储访问形成了数据竞争。

在计算中,同步机制通常由用户级的软件例程所构建,而这依赖于硬件提供的同步指令。

重点介绍加载(lock)和解锁(unlock)

原子交换(atomic swap):构建同步机制的一种典型操作,会将寄存器中的值与存储器中的值进行交换。

假设构建一个简单的锁变量,其中0用于表示锁变量可用,值1用于表示锁变量已被占用。处理器尝试通过将寄存器中的1与该锁变量对应的内存地址的值进行交换来设置加锁。如果某个其他处理器已声明访问该锁变量,则交换指令的返回值为1,表明该锁已被其他处理器占用,否则为0,表示加锁成功。后一种情况下,锁变量的值变为1,以防止其他处理器也加锁成功。

另一种方法是使用指令对,其中第二条指令返回一个值,该值表示该指令对是否被原子执行。如果任何处理器执行的所有其他操作都发生在该对指令之前或者之后,则该指令对实际上是原子的。因此,当指令对实际上是原子操作时,没有其他处理器可以在指令对之间改变值。

未完待续。。。


原文地址:https://blog.csdn.net/qq_36324341/article/details/143091362

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!

  • 上一篇:3.4射线
  • 下一篇:没有了