assembly EAX、EBX和ECX在装配方面有什么区别?

hpcdzsge  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(180)

我试图学习一些汇编,但是我很难理解一些基本的东西是做什么的。EAX、EBX和ECX仅仅是变量吗?或者它们除了存储值之外都有独特的特定用途吗?

zujrkrfu

zujrkrfu1#

eaxebxecx等实际上是寄存器,可以将其视为 “硬件” 变量,有点类似于高级语言的变量。寄存器可以直接在您的软件中使用,例如movaddcmp。前导的e代表eextended,表示您的寄存器是32位宽。另一方面,64位寄存器以r开始。
这些寄存器并不总是用于下面说明的用途。此图显示了Linux 64位ABI的寄存器使用情况。

不过,并不是所有的寄存器都在这个捕获中描述。例如,*ip是一个特殊的寄存器(process counter),它保存了下一条要执行的指令。
您可以在full ABI there.中找到一些特定于Linux的信息,但大多数信息仍与任何POSIX兼容系统相关。

z5btuh9x

z5btuh9x2#

EAX、EBX、ECX、EDX、EBP、EDIESI寄存器都是32位通用寄存器,用于临时数据存储和内存访问。

https://web.archive.org/web/20191114093028/https://gerardnico.com/computer/cpu/register/general
某些CPU指令修改特定的寄存器。例如,movsbESI获取S源地址,从EDI获取D估计,复制一个字节并更改ESI和EDI寄存器。
换句话说,您可以将它们用作变量,但在使用特定指令时,它们也可能具有特定用途。
您可能想要参考参考。英特尔和AMD都提供在线手册。

相关问题