术语:汇编语言编程中的"寄存器"

Pwn*_*Pwn 7 assembly cpu-registers

我听说过术语:寄存器,硬件寄存器,程序寄存器,寄存器文件.

这些之间有什么区别?总而言之,EAX寄存器的类型是什么?程序注册?

小智 8

寄存器是CPU内部的存储区域.以下是一些定义:

  • 寄存器文件是寄存器数组 - 有关完整说明,请参阅http://en.wikipedia.org/wiki/Register_file.
  • eax寄存器是Intel x86系列CPU的累加器寄存器 - 它是整数数学完成的地方.
  • 程序寄存器(我认为你的意思是程序计数器)是一个专用寄存器,它包含要执行的下一个机器代码指令的地址


Omr*_*dan 5

寄存器是位于 CPU 内部的一小部分内存。并被汇编语言用来执行各种任务。

难道程序寄存器是指程序计数器?


Ant*_*eru 5

嗯,你有通用寄存器,然后你有特殊用途的寄存器(例如,程序计数器寄存器),还有其他各种(内存/段寄存器,SSE)。

EAX、EBX 等是标准的通用寄存器。您可以将它们用于任何您想要的用途。通常,返回值应该放入 EAX 中,但基本上就是这样。然后你有堆栈指针 EBP,它指向你的堆栈的开始。最后,您必须编写计数器,它指向当前指令 EIP。在 x86 上,有一些特殊情况,在进行 64 位整数计算时,两个寄存器会被融合。字符串指令存在更多特殊情况。如果您要学习汇编,最简单的方法是从 PowerPC 开始,它有更多寄存器,您可以不受限制地自由使用所有寄存器。

所有这些寄存器当然都是硬件寄存器,也就是说,它们在物理上内置于您的 CPU 中;) 它们所在的位置称为寄存器文件。

您可以看到的另一种类型的寄存器是,如果您有一台使用寄存器 ( Parrot )的虚拟机,您将获得“虚拟寄存器”,这些寄存器稍后会分配给实际寄存器。这类似于您自己编写编译器时可以做的事情,您基本上假设无限数量的寄存器(即每次使用时生成一个新的),并在不同阶段(寄存器分配)转换为真实寄存器)。


syb*_*eon 5

寄存器是最基本的数据存储设备.现在这些是主要的区别.

寄存器文件通常是以这种方式组织的大量寄存器集合,以便它们用于计算.在现代处理器中,所有计算都在存储在寄存器文件中的若干寄存器中的值之间执行.

硬件寄存器通常是指存储配置和状态信息的寄存器.这可能适用于处理器或某些外部硬件I/O设备.

程序寄存器可以指代程序计数器,该程序计数器是存储由处理器执行的当前指令的存储位置的特殊寄存器.