Assembly 什么&x2019;s组件中eax ebx ecx之间的差异
我试图学习一些组装,但我很难理解一些基本的东西是做什么的。eax ebx ecx只是变量,还是它们除了存储值之外都有独特的特定用途?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是一个特殊
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好的,谢谢