Я пытаюсь написать программу на C для машины без виртуальной памяти (или, если быть более точным, ОС), и у меня возникают некоторые трудности с разделом .rodata, или, точнее, с тем, что там происходит.,Проблема заключается в том, что, хотя разделы располагаются по четко определенным адресам во время компоновки, когда программа переходит в исполнение, она перемещается.
Например: допустим, что моя программа запускается, она начинается с 0x1000, когдаон выполняется, то, что должно быть в 0x1000, перемещается в 0xff1000.
Как говорится, моя проблема в том, что материал, который обычно входит в .rodata, "жестко закодирован" компилятором (gcc), и яОни теряют указанные константы .rodata в памяти из-за перемещения и gcc жестко кодируют их адреса, так что они получают абсолютное смещение вместо относительного.
Есть ли способ, которым я могу получить константы .rodata иметь относительное смещение вместо абсолютного.А под относительным я подразумеваю относительно каких-либо активных регистров процессов?