Intel架构的基本知识
1.字节序
CPU的字节序分为LittleEndian和BigEndian。
所谓Endian,就是多字节数据在内存中的排列方式。
例如,假设有一个整数0x11223344:
LittleEndian的排列方式是,从内存的低地址开始,依次存放 0x44 0x33 0x22 0x11;
BigEndian的排列方式是,从内存的低地址开始,依次存放 0x11 0x22 0x33 0x44。
Intel架构采用LittleEndian,其他的比如SPARC、MIPS架构采用BigEndian。
2.32位环境中的寄存器
32位环境中的寄存器有以下一些。
(1)8个32位通用寄存器
8个32位通用寄存器分别为 EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。
ESP寄存器用于保存栈指针。
某些命令使用特定的寄存器。例如,字符串命令将ECX、ESI和EDI寄存器作为操作数使用。
8个通用寄存器的主要用途如下:
EAX 操作数的运算、结果
EBX 指向DS段中数据的指针(见下文段寄存部分)
ECX 字符串操作或循环的计数器
EDX 输入输出指针
ESI 指向DS寄存器所指示的段中某个数据的指针,或者是字符串操作中字符串的复制源(source)
EDI 指向ES寄存器所指示的段中某个数据的指针,或者是字符串操作中字符串的复制目的地(destination)
ESP 栈指针(SS段)
EBP 指向栈上数据的指针(SS段)
但是,通用寄存器的用途并不限