C语言 LLVM,为什么我们需要`load`和`store`?

4si2a6ki  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(84)

我在阅读:https://llvm.org/docs/LangRef.html#getelementptr-instruction
据我所知,LLVM有无限的寄存器,这就提出了一个问题,为什么我们需要storeload命令,以及我们应该在什么时候使用它们。
为什么我们不能把所有的东西都记在收银机里?
为了使事情变得清楚,你可以友好地参考每行中使用的命令:

void example_func(int x) {
  int y;
  int z = 3;
  int a = x;
  a = 3;
  x = 2;
}

字符串

6ju8rftf

6ju8rftf1#

你问为什么我们需要货物和储备,我会给予你一个理由。假设你的目标是编译一个有32个寄存器的程序,但你希望一次有超过32个变量。现在您可以看到需要用内存加载和存储。
考虑以下场景:

int f(int a) {
  return a == 0 ? 0 : f(a-1);
  return f(a-1);
}
f(50);

字符串
如果考虑调用树,您将意识到每个对f的调用都有一个a,并且有超过32个对f的调用,因此需要加载和存储。

相关问题