我正在大学里学习计算机体系结构,我想我不知道计算机系统和C语言概念的基本知识,没什么让我感到困惑的,所以我一直在寻找有关它的内容,但找不到答案想要让我更加困惑,因此请在此处上传问题。
1。我以为寄存器在CPU中保存着一条指令,存储地址或任何类型的数据。而且我还学习了内存布局。
------------------
堆栈
动态数据
静态数据
文字
保留部分
------------------
然后寄存器在CPU中具有此内存布局吗?或者我只是将其与计算机的5个组件(输入,输出,内存,控件,数据路径)的内存布局混淆。我认为这是这5个组件的布局之一。
RISC-V(C中的while循环)
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:...
然后该操作在哪里发生?注册吗?
如果寄存器在我上面绘制的那个内存布局中,那么x0,x1的内容包含在哪里?从这里开始没有任何意义。所以我很困惑我该如何认为注册看起来像什么。
我脑海中的一切都那么抽象,所以我想问题听起来有点怪异。如果没有清除任何内容,请给我评论。
答案 0 :(得分:1)
然后寄存器在CPU中具有此内存布局吗?
不,这是零意义,您的想法在这里不对。
寄存器文件是其自己的单独空间,而不是内存地址空间的一部分。它不能用变量索引,只能通过将寄存器号硬编码到指令中,因此实际上const [token, setToken] = useState(null);
useEffect(() => { -->(2), after component mounts
getToken();
}, []);
const getToken = async () => { -->(3)
const token = await AsyncStorage.getItem('token'); -->(6)
setToken(token); -->(7)
};
console.log("token:") //console -->(4)
console.log(token) -->(5)
return ( --> this will execute first (1)
<NavigationContainer>
<AppStack.Navigator>
{
token=== null ?
//..
}
</AppStack.Navigator>
</NavigationContainer>
);
是“ x2
之后的下一个寄存器”之类的东西并没有任何意义。例如您不能循环访问寄存器。 它们只是软件可以根据需要使用的两个单独的32位或64位数据存储空间。
将其分解的自然类别基于软件/调用约定:
还有arg传递与返回值寄存器。