+ -
当前位置:首页 → 问答吧 → 帮我理解下这段话(关于基址)

帮我理解下这段话(关于基址)

时间:2010-12-04

来源:互联网

连接器链接时把目标文件构建成pe格式文件,pe 格式中有代码段数据段的大小,偏移,以及载入内存后载入的位置,操作系统执行exe程序时解析pe格式,根据格式载入指定内存位置。所以最终还是由连接器决定,连接器链接程序时把段信息设置为默认值,当然所有段基址也自定义,比如ld就有脚本可以指定段的内存位置等等。

所以全局的变量和代码等都是固定位置的,像函数局部变量这些存储于堆栈,根据函数调用顺序的不同最终的地址也不同,还有动态分配的空间(new和malloc分配)和动态分配的资源,内存地址不一定每次都会相同。 

这上面这段话的意思就是说link的时候已经确定内存地址了吗?

作者: yg23hxj   发布时间: 2010-12-04

啊啊啊啊啊啊啊

作者: x695664507   发布时间: 2010-12-04

多么难懂的一段话啊。。
就我学的16位汇编来说,应该是偏移地址已经确定了。段地址由系统加载时来确定,可以这么理解内存地址是确定了。。毕竟段地址也是一个数值而已嘛
32位汇编觉得有点晕。。还没学懂。不过应该是一个意思。据说win32汇编中,也是系统固定所有的段起始地址全为0

作者: ldlihuanfa   发布时间: 2010-12-04