汇编 内存段划分和寄存器
内存段
BSS段:BSS段,Block Start by Symbol,通常指用来存放程序中未初始化(未赋值: int x )的全局变量的一块内存区域,属于静态内存分配。
数据段:存放程序中已初始化的全局变量的一块内存区域,属于静态内存分配。(赋值int x=100;)
代码段:通常指用来存放程序执行代码的一块内存区域(编译后)。
堆:用于存放进程运行中被动态分配的内存段,大小可动态变化。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张),当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。
栈:栈又称堆栈,存放程序临时创建的局部变量
寄存器
分类:
通用寄存器:
数据寄存器:
AX是主要累加器(EAX)
BX基址寄存器(EBX)
CX技术寄存器(ECX)
DX数据寄存器(EDX)
指针寄存器
IP:存储下一个要执行的指令的偏移地址。IP与CS寄存器给出了完整的代码段中的当前指令地址。(EIP)
SP:提供程序堆栈内的偏移值。SP和SS寄存器是指程序堆栈的当前位置的数据或地址。(ESP)
BP:帮助在引用的参数变量传递到一个子程序。(EBP)
AX是主要累加器,用于输入/输出和多数算术运算指令。
BX基址寄存器
CX技术寄存器
DX数据寄存器
索引寄存器
控制寄存器
段寄存器
数据寄存器:
\n
\n
故不积跬步,无以致千里