小端序和大端序
- 大端序:高位字节保存在内存的低位地址
- 小端序:高位字节保存在内存的高位地址
例如:
0x12345678,其高位为0x12,低位为0x78;
大端序:
地址 数据
00401008(高地址) 0x78
00401006 0x56
00401004 0x34
00401002(低地址) 0x12
小端序:
地址 数据
00401008(高地址) 0x12
00401006 0x34
00401004 0x56
00401002(低地址) 0x78
IA-32寄存器
寄存器:是CPU内部存放数据的一些小型区域与RAM(随机存储器)略有不同。CPU访问RAM时经过较长的物理地址,所需时间长;而寄存器集成在CPU内部,读写速度快。
IA-32寄存器是英特尔推出的32位元架构;由4类寄存器组成:
- 通用寄存器(32位,8个)
- 段寄存器(16位,6个)
- 程序状态与控制寄存器(32位,1个)
- 指令指针寄存器(32位,1个)
1.通用寄存器
EAX:累加器
EBX:基址寄存器
ECX:计数器
EDX:数据寄存器
以上四个主要用于算术运算(ADD,SUB,XOR,OR等),常用于保存常量或变量的值。
EBP,ESI,EDI,ESP就不做多解释(主要也都看不懂),主要作用如下:
ESP表示栈区域的栈顶指针;
EBP表示栈区域的基地址;
EDI与ESI与特定指令使用(LODS,STOS,REP,MOVS等),主要用于内存复制。
2.段寄存器
CS:代码段寄存器
SS:栈段寄存器
DS,ES,FS,GS:数据段寄存器
3.程序状态与控制寄存器:EFLAGS:标志寄存器
- ZF 若运算结果为0,则其值为1(True),否则其值为0(False)
- OF 有符号整数溢出时,OF置1;MSB(最高有效位)改变时,OF置1
- CF 无符号整数溢出时,其值置1
4.指令指针寄存器:EIP
EIP中保存着CPU要执行的指令
栈
这个没什么好说的,就是按FILO(First In Last Out,后进先出)原则存储数据
这一篇就是简单地了解一下以后所需知识