运行时域和加载时域(运行地址和加载地址)
参考文献:http://hi.baidu.com/hnylcxq/item/3bd13b52bf9875908c12edcf 云边日的空间
http://blog.csdn.net/mr_raptor/article/details/7390597 mr_raptor的专栏
在连接目标代码时,会提到运行地址和加载地址。加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。
下面我们看看链接文件。
对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。先看一下GNU官方网站上对.lds文件形式的完整描述:
SECTIONS {
...
secname start BLOCK(align) (NOLOAD) : AT ( ldadr )
{ contents } >region :phdr =fill
...
}