1、栈的定义
栈:是一种运算受限的线性表,只允许其在一端进行插入和删除操作。
栈顶:指栈允许进行插入和删除的一端。
栈底:不允许进行插入和删除的一端。
空栈:栈中元素为零。
栈具有先进后出,后进先出的特点,简称为LIFO结构(Last in first out)
(图片来自维基百科)
注意:程序的栈是从进程地址空间的高地址向低地址增长的。
2、寄存器
32 位和 64 位程序的简单区别
- x86
- 函数参数在函数返回地址的上方
- x64
- System V AMD64 ABI (Linux、FreeBSD、macOS 等采用) 中前六个整型或指针参数依次保存在 RDI, RSI, RDX, RCX, R8 和 R9 寄存器中,如果还有更多的参数的话才会保存在栈上。
- 内存地址不能大于 0x00007FFFFFFFFFFF,6 个字节长度,否则会抛出异常。