Mateus, pelo visto é isso mesmo!
De acordo com o Tanembaum em Sistemas Operacionais Modernos, 3ªEd, página 143-144:
"Uma possível solução para isso é modificar as instruções do programa segundo a partição de memória em que ele será carregado. Programas carregados na partição 1 terão 100K adicionados a cada endereço; programas carregados na partição 2 terão a adição de 200K e assim por diante. Para executar a relocação do programa, ao carregá-lo em uma partição de memória, o ligador deve incluir no código binário uma lista ou um mapa informando quais palavras do programa são endereços que necessitam de realocação e quais são códigos de operação, constantes ou outros itens que não devem ser realocados."
É meio estranha essa ideia, mas no parágrafo anterior ele dá uma dica: "Quando um programa é ligado (isto é, quando se combinam o programa principal, procedimentos escritos pelo usuário e procedimentos de biblioteca em um único espaço de endereçamento), o ligador (linker) tem de saber em que endereço o programa deve começar na memória".