当前位置: 首页 > 知识库问答 >
问题:

为什么rbp和rsp被称为通用寄存器?

顾穆冉
2023-03-14

根据Intel在x64中的说法,以下寄存器被称为通用寄存器(RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8-R15)https://software.Intel.com/en-us/articles/indroduction-to-x64-assembly。

在下面的文章中,RBP和RSP是特殊用途寄存器(RBP指向当前堆栈帧的底部,RSP指向当前堆栈帧的顶部)。https://www.recurse.com/blog/7-commanding-c-by-learning-assembly

现在我有两个相互矛盾的说法。Intel的声明应该是可信的,但是什么是正确的,为什么RBP和RSP被称为通用?

共有1个答案

马星阑
2023-03-14

通用指的是所有这些寄存器都可以用于任何使用通用寄存器进行计算的指令,而例如,您不能使用指令指针(RIP)或标志寄存器(RFLAGS)来执行任何您想要的操作。

其中一些寄存器被设想用于特定用途,通常是。其中最关键的是RSP和RBP。

如果您需要为自己的目的使用它们,您应该在存储其他内容之前保存它们的内容,并在完成后将它们恢复到原始值。

 类似资料:
  • 我开始阅读《Spark权威指南大数据处理变得简单》一书,学习Spark。当我阅读时,我看到一句话:“DataFrame是最常见的结构化API,它只是用行和列表示一个数据表。”我无法理解为什么RDD和数据帧被称为API?

  • 本文向大家介绍为什么Vue被称为“渐进框架”?相关面试题,主要包含被问及为什么Vue被称为“渐进框架”?时的应答技巧和注意事项,需要的朋友参考一下 为什么Vue被称为“渐进框架”?

  • 昨天,我看了一些由VC 2010生成的32位代码(很可能;对不起,我不知道具体的选项),我被一个奇怪的反复出现的细节所吸引:在许多函数中,它在序言中将ebx归零,并且它总是像“零寄存器”一样使用它(想想MIPS上的零)。特别是,它经常: 用它来清零内存;这并不罕见,因为的编码比大1到4个字节(即使为0也必须编码完整的即时值大小),但通常(gcc)必要的寄存器会“按需”清零,并保留以用于更有用的目的

  • 我找不到合适的解释。我可以找到JVM被称为虚拟机的原因,但无法找到jre不被称为虚拟机的原因。请帮忙。

  • 问题内容: 说我有一个清单。在什么情况下被称为? 我基本上理解了文档,但是我也想看到一个示例来毫无疑问地阐明其用法。 问题答案: 当Python尝试将两个对象相乘时,它首先尝试调用左侧对象的方法。如果左对象没有方法(或者该方法返回,表明它不适用于所讨论的右操作数),则Python希望知道右对象是否可以进行乘法。如果右操作数与左操作数的类型相同,Python就会知道它不能,因为如果左对象不能做到这一

  • 这是为编写的: 有界队列。当与有限的maximumPoolSizes一起使用时,有界队列(例如ArrayBlockingQueue)有助于防止资源耗尽,但可能更难调优和控制。队列大小和最大池大小可以相互权衡:使用大队列和小池可以最大限度地减少CPU使用量、OS资源和上下文切换开销,但可能会导致人为的低吞吐量。如果任务经常阻塞(例如,如果它们是I/O绑定的),系统可能能够为更多的线程安排时间,而不是