32位 一般只总线宽度(同时读取的位数),现代计算机一般总线和地址位数一致,早期计算机存在总线8位,地址位16位的情况
16位地址可寻址64k 32位可寻址4G
1m内存的实模式分段模型是怎么回事儿来着?
可用内存分段
由高到低为
stack
堆栈(或只称栈,翻译问题) 在汇编里的结构: (假装有图) 栈在汇编里并没有什么用.系统默认会将一些环境变量地址压如栈里,寻址一般通过esp偏移量计算 在汇编中调用时比较常用, (汇编调用c的执行过程) c库初始化->汇编(包含c函数调用)->c库结束
汇编执行前首先将ebp压栈,然后赋值ebp=esp,之后需要对剩余的神圣变量压栈. main函数实行结束后先反序出栈非ebp,esp的神圣变量,之后esp=ebp,出栈ebp. (esp,ebp,ebx,edi,esi) c语言保证这些寄存器值在函数外不发生变化
调用c函数时从右向左将参数压栈,执行结束后需要清理栈空间,恢复原状
.bss
block start by symbol 存放未初始化变量
.data
已初始化变量
.text
代码,以及包含的定义的已初始化变量
heap
应该是c语言新加的,存放main内动态分配的内存
参考
- 汇编语言,基于linux环境 2.汇编中bss,data,text,rodata,heap,stack段的作用