Assembly 什么&x2019;s组件中eax ebx ecx之间的差异

Assembly 什么&x2019;s组件中eax ebx ecx之间的差异,assembly,x86,Assembly,X86,我试图学习一些组装,但我很难理解一些基本的东西是做什么的。eax ebx ecx只是变量,还是它们除了存储值之外都有独特的特定用途?eax、ebx、ecx等实际上是寄存器,可以被视为“硬件”变量,这意味着不同于更高级语言的变量。寄存器可以直接与指令一起在软件中使用,如mov、add或cmp。前导的e表示寄存器的扩展宽度为32位。另一方面,64位寄存器以r开头 这些寄存器的使用目的不尽相同,如下所示。此图显示Linux 64位的寄存器用法 不过,在此捕获中未描述所有寄存器。例如,*ip是一个特殊

我试图学习一些组装,但我很难理解一些基本的东西是做什么的。eax ebx ecx只是变量,还是它们除了存储值之外都有独特的特定用途?

eax、ebx、ecx等实际上是寄存器,可以被视为“硬件”变量,这意味着不同于更高级语言的变量。寄存器可以直接与指令一起在软件中使用,如
mov
add
cmp
。前导的
e
表示寄存器的扩展宽度为32位。另一方面,64位寄存器以
r
开头

这些寄存器的使用目的不尽相同,如下所示。此图显示Linux 64位的寄存器用法

不过,在此捕获中未描述所有寄存器。例如,
*ip
是一个特殊寄存器(),它保存要执行的下一条指令


您可以找到一些特定于Linux的信息,但大多数信息仍然与任何兼容系统相关。EAX、EBX、ECX、EDX、EBP、EDI和ESI寄存器都是32位通用寄存器,用于临时数据存储和内存访问

一些CPU指令修改特定寄存器。例如,
movsb
ESI获取S源地址,从EDI获取D估计,复制一个字节并更改ESI和EDI寄存器

换句话说,您可以将它们用作变量,但在使用特定指令时,它们也可能有特定的用途


您可能需要查阅参考资料。英特尔和AMD都提供在线手册。

这些是不同的处理器寄存器。汇编语言中没有变量。要学习这些基础知识,你应该阅读一篇完整的汇编介绍…@Erlkoenig好的,谢谢