badbird1234 发表于 2009-8-26 07:17

问个地址匹配的问题

最近搞启动代码
看了LINUX的BOOT
很奇怪程序跑来跑去
复制来复制去
还能运行
我想问的是
就是我们编程序时打了很多跟地址有关的符号
跳转时怎么识别在不同地址的同一个标号的呀
希望高手指点
现在晕着那

xinzha 发表于 2009-9-3 06:38

到了真正生成汇编的时候,所有的跳转都是被解释为相对地址或者绝对地址的跳转,而你在不同的函数中所使用的相同标号,早已经在编译链接阶段标记为唯一可识别的记号,不会说到处乱跳的。

itelectron 发表于 2009-9-3 07:59

偶也有个问题!请教!
就是DATA数据 是先存在 ROM中么, 然后复制到 RAM 区 么???

xinzha 发表于 2009-9-4 07:08

不同的启动模式有不一样的做法,如果是自启动,已经初始化为不等于0的gp段会在rom中(压缩或不压缩),而bss段只需要标记大小就行,系统启动的时候把整个bss区域初始化为0。而类似于constant 这种运行时刻不可修改的变量,ram少的就放到rom中(必须非压缩),rom少的就解压后放到ram中
而如果是类似于nfs这种模式的,多数是主机就把镜像的最完整的样子传过去就得了。
页: [1]
查看完整版本: 问个地址匹配的问题