Elf格式的可执行文件包含多个段,如代码段、数据段、BSS段、堆栈等。如果我们说段xyz是静态重定位的,那是什么意思?
Elf格式二进制文件为每个段包含相对地址。当我们说静态重定位时,是否意味着相对地址实际上是物理地址?
Elf格式的可执行文件包含多个段,如代码段、数据段、BSS段、堆栈等。如果我们说段xyz是静态重定位的,那是什么意思?
Elf格式二进制文件为每个段包含相对地址。当我们说静态重定位时,是否意味着相对地址实际上是物理地址?
静态重定位是指在程序运行之前移动数据或代码,并为它们分配绝对位置。例如:链接器就是静态重定位的例子,它将程序的多个模块移动并组合成一个程序。
静态重定位是指在程序开始执行之前进行地址转换。典型的硬件指令周期如下:
loop
w := M[instr_ctr]; (* fetch instruction *)
oc := Opcode(w);
adr := Address(w);
instr_ctr := instr_ctr + 1;
case oc of
1: reg := reg+M[adr]; (* add *)
2: M[adr] := reg; (* store *)
3: instr_ctr := adr; (* branch *)
...
end
end (* loop *)