为什么要引入动态重定位如何实现

为什么要引入动态重定位如何实现,第1张

1、程序在运行过程中经常要在内存中移动位置,为了保证这些被移动了的程序还能正常执行,必须对程序和数据的地址加乱芦以修改,即重定位。引入重定位的目的就是为了满足程序的这种需要;知迅

2、要在不影响指搭陪此令执行速度的同时实现地址变换,必须有硬件地址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。

程首闹序永远是从“0”地址开始运行的。记住!

还是不好描述。这样消巧说吧,举个嵌入式例子,

我要做这样一件事情:我需要将片外FLASH的程序,加载到SDRAM里运行。怎么做?

第一部,我会写一个启动程序者桥罩,启动程序的作用,就是将FLASH的内容,搬到SDRAM。

此时的程序运行地址,就是启动文件的地址(ROM地址),比如0x00开始。

将数据搬至SDRAM后,我需要运行SDRAM的程序怎么办?(SDRAM地址比如是0X20000000)

第二步:地址重映射,将SDRAM的地址,重新映射成,0x00, 即举例的ROM,和SDRAM地址发送了交换

这个是重定位地址。即SDRAM的地址入口变为0x00.

第三部,芯片会重新启动,从“0”地址开始运行,即使从,我们的SDRAM里开始运行了,也就是FLASH的程序了。

不知道这样说你能明白不?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8183809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存