Что подразумевается под статически перемещенным или статическим перемещением сегмента - PullRequest
3 голосов
/ 08 октября 2010

Исполняемый файл формата elf содержит различные сегменты, такие как код, данные, bss, стек и т. Д. Если мы говорим, что сегмент xyz статически перемещен, что это значит?

Двоичный файл формата elf содержит относительные адреса для каждого сегмента. Когда мы говорим, что статически перемещено, означает ли это, что относительные адреса на самом деле являются физическими адресами?

Ответы [ 3 ]

4 голосов
/ 21 июня 2011

Статическое перемещение означает перемещение данных или кодирования и присвоение им абсолютных местоположений до запуска программы. Например: - Linker - это пример статического перемещения, которое перемещает несколько модулей программы и объединяет их в программу.

2 голосов
/ 13 апреля 2012

Статическое перемещение относится к преобразованию адреса, выполняемому до начала выполнения программы.Типичный цикл инструкций по аппаратному обеспечению выглядит следующим образом:

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 *)
1 голос
/ 24 февраля 2012

в ситуации отсутствия абстракции памяти (программы обращаются непосредственно к физической памяти) это выглядит так: программа A использует адрес x, программа B также использует адрес x в некоторой точке

, чтобы обе программы могли одновременно выполнять некоторыеоперационные системы / ранние компьютеры, такие как IBM 360, изменяют адреса программы B на лету при загрузке, чтобы она не использовала адреса памяти, используемые программой A

Когда программа была загружена по адресу 16,384константа 16 384 была добавлена ​​к каждому адресу программы в процессе загрузки.

...