程序的内存映像

本文探讨了C程序在80X86系统中的内存映射,分为代码、全局变量、栈和堆四个区域。代码对应CS,全局变量对应DS,堆栈对应SS。通过段寄存器和段内偏移地址访问内存,利用段表进行地址变换。理解可能有误,仅供参考。
摘要由CSDN通过智能技术生成

这几天在看C语言的书籍,对C的内存映像有点疑惑,于是,查找资料,查阅了庞丽萍编著的《操作系统原理》第四版中的第七章主存管理中的段式系统,此外还看了王元珍、曹忠生、韩忠芬编著的《80X86汇编语言程序设计》得到了一个自己对在80X86结构下的内存映射的理解。不过也许自己的理解是错的或者有不到之处,希望大神能够指出理解的不足之处。

首先,一个C程序,在内存中的映射(当然这里指的是80X86系统)包括四个区域(这里是在看C语言大全的时候介绍的):

第一个区域是程序代码区域:存放的是程序代码。

第二个区域是全局变量区域:存放的是全局变量和静态变量等伴随着整个程序生存过程的数据。

第三个区域是栈(stack):用来保存函数调用时返回地址、函数变元、局部变量、CPU当前状态等临时的数据。

第四个区域是堆(heap):用来提供给程序员动态分配和释放的区域,比如使用malloc申请一段内存,就是在这个区域中申请的。

然后联系《80x86汇编语言程序设计》中介绍的Intel80X86微处理器结构中寄存器的知识,知道在处理器中的六大部件中,寄存器分为以下几个:

执行部件中的寄存器:

EAX:累加寄存器

EBX:基址寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值