eax ebx ecx在组装中有什么区别

时间:2019-11-14 08:26:12

标签: assembly x86

我正在尝试学习一些汇编程序,但是我很难理解一些基本功能。 eax ebx ecx只是变量,还是除了存储值之外,它们都具有唯一的特定用途?

2 个答案:

答案 0 :(得分:3)

EAX,EBX,ECX,EDX,EDP,EDI ESI 寄存器都是32位通用寄存器,用于临时数据存储和存储访问。

https://web.archive.org/web/20191114093028/https://gerardnico.com/computer/cpu/register/general

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

换句话说,您可以将它们用作变量,但是在使用特定说明时它们也可能具有特定用途。

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

答案 1 :(得分:2)

eax,ebx,ecx等实际上是寄存器,可以看作是“硬件” 变量,其含义与高级语言的变量不同。可以直接使用movaddcmp等指令在软件中使用寄存器。前导e表示扩展,即您的寄存器为32位宽。另一方面,64位寄存器以r开头。

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

Linux 64-bit ABI

尽管此捕获中未描述所有寄存器。例如*ip是一个特殊的寄存器(process counter),其中包含要执行的下一条指令。

您可以找到full ABI there.某些信息是特定于Linux的,但是大多数信息仍然与任何符合POSIX的系统有关。

相关问题