Memory 寄存器和存储器,risc-v

Memory 寄存器和存储器,risc-v,memory,cpu-architecture,cpu-registers,riscv,Memory,Cpu Architecture,Cpu Registers,Riscv,我在我的大学学习计算机体系结构,我想我不知道计算机系统和C语言的基本概念,几乎没有什么东西让我困惑,我一直在搜索它,但找不到我想要的答案,让我更困惑,所以把问题上传到这里 一,。我认为寄存器在CPU中保存指令、存储地址或任何类型的数据。我还学习了内存布局 ------------------ 堆叠 动态数据 静态数据 正文 保留部分 ------------------ 那么寄存器在CPU中有这个内存布局吗?或者我只是把它和计算机的5个组件(输入、输出、内存、控制、数据路径)的内存布局搞混了。

我在我的大学学习计算机体系结构,我想我不知道计算机系统和C语言的基本概念,几乎没有什么东西让我困惑,我一直在搜索它,但找不到我想要的答案,让我更困惑,所以把问题上传到这里

一,。我认为寄存器在CPU中保存指令、存储地址或任何类型的数据。我还学习了内存布局

------------------

堆叠

动态数据

静态数据

正文

保留部分

------------------

那么寄存器在CPU中有这个内存布局吗?或者我只是把它和计算机的5个组件(输入、输出、内存、控制、数据路径)的内存布局搞混了。我认为这是这5个组件的布局之一

RISC-V(在C中循环时)

那么这个操作发生在哪里呢?登记

  • 我学习了RISC-V寄存器,如下所示
    • x0:常量值为0
    • x1:回信地址
    • x5-x7、x28-x31:临时性
    若寄存器在我上面画的内存布局中,那个么x0,x1的内容包含在哪里?从这里讲没有意义。所以我很困惑,我该如何看待寄存器

    在我的脑海里,一切都是那么抽象,所以我猜这个问题听起来有点奇怪。如果有什么不清楚的地方,请评论我

    那么寄存器在CPU中有这个内存布局吗

    不,这毫无意义,你的想法在这里是错误的

    寄存器文件是它自己的独立空间,而不是内存地址空间的一部分。它不能用变量进行索引,只能通过将寄存器编号硬编码到指令中,因此实际上没有任何意义上的
    x2
    是“x1之后的下一个寄存器”或任何东西。e、 你不能在寄存器上循环它们只是两个独立的32或64位数据存储空间,软件可以随意使用。

    分解它们的自然类别基于软件/调用约定:

    • 堆栈指针
    • 调用保留寄存器(函数调用不修改它们,反之,如果要在函数中使用一个寄存器,则必须保存/恢复它)
    • 调用被删除的寄存器(必须假定函数调用是在这些寄存器上执行的,反之,可以在不保存/恢复的情况下使用)
    • 零寄存器

    另外,arg传递与返回值寄存器。

    现在一切都有意义了。谢谢大家!@彼得·考德斯
    Loop:
       slli x10, x22, 3
       add x10, x10, x25
       ld x9, 0(x10)
       bne x9, x24, Exit
       addi x22, x22, 1
       beq x0, x0, Loop
    Exit:...