●作业装入内存后,由于其起始地址 不是0地址。 ●需要把装配模块程序中以0为参考 的相对地址变换成实际的绝对地址。 ●在程序装入内存后,需要对程序指 令中与地址有关的代码进行转换。 ●这个相对地址向绝对地址的转换过 程称为地址重定位
⚫作业装入内存后,由于其起始地址 不是 0 地址。 ⚫需要把装配模块程序中以 0 为参考 的相对地址变换成实际的绝对地址。 ⚫在程序装入内存后,需要对程序指 令中与地址有关的代码进行转换。 ⚫这个相对地址向绝对地址的转换过 程称为地址重定位
●装配模块程序的相对地址经过地址 重定位后,就成为可以由cPU直接 访问的绝对地址程序。 ●地址重定位完成的相对地址变换成 内存的绝对地址的操作又称为地址 映射(map)
⚫装配模块程序的相对地址经过地址 重定位后,就成为可以由CPU直接 访问的绝对地址程序。 ⚫地址重定位完成的相对地址变换成 内存的绝对地址的操作又称为地址 映射(map)
源程序↓汇编编译、「目标程序地址重定位「绝对地址 连接(装配模块) 程序 名字空间 地址空间 存储空间
源程序 汇编 编译 链接 目标程序 (装配模块) 地址重定位 绝对地址 程序 名字空间 地址空间 存储空间
名字空间 地址空间 存储空间 0 A: JMP B 10|JMP40 1010|JMP1040 B: LOADr1 DI 40LOAD1,[5001040 LOAD r1,[1500 D1:1234 5001234 15001234
名字空间 地址空间 存储空间 ...... ...... A: JMP B ...... ...... B:LOAD r1,D1 ...... ...... D1: 1234 0 10 40 500 ...... ...... JMP 40 ...... ...... LOAD 1,[500] ...... ...... 1234 1000 1010 1040 1500 ...... ...... JMP 1040 ...... ...... LOAD r1,[1500] ...... ...... 1234
二。静态地址重定位 ●静态重定位是在程序装入内存后, 在程序执行之前,根据所在内存的 起始位置,一次性地直接修改指令 中有关地址的代码。 ●需要修改的指令代码一般是转移指 令、子程序调用指令和访问数据区 指令中的直接地址代码
二.静态地址重定位 ⚫静态重定位是在程序装入内存后, 在程序执行之前,根据所在内存的 起始位置,一次性地直接修改指令 中有关地址的代码。 ⚫需要修改的指令代码一般是转移指 令、子程序调用指令和访问数据区 指令中的直接地址代码