O que é um 8086 relocável?

4

Estou executando algum software Fortran (LBLRTM) e um script de shell que prepara entradas gera vários arquivos com nomes TAPE3 , TAPE4 , etc. Para fins de depuração, usei file para identificar tipo de arquivo. file me diz:

TAPE3:  8086 relocatable (Microsoft)

Meu palpite é que file está errado aqui, e que é apenas um arquivo binário que parece um 8086 relocatable . Mas o que é um 8086 relocatable ?

    
por gerrit 25.10.2012 / 11:41

1 resposta

4

Acho que o código relocável é anterior à memória virtual (VM). A alternativa é código absoluto, que precisa ser carregado em um local específico na memória física (por exemplo, porque contém instruções "Jump" que têm endereços físicos como destinos)

O 8086 era retrocompatível com processadores mais antigos, que só podiam endereçar 64 KB de memória usando registros de endereço de 16 bits. O 8086 também tinha registros de segmento de 16 bits que foram levados em conta (por exemplo, ao executar uma instrução de salto) basicamente o endereço real = endereço + segmento < < 4. Isso permitiu que os programas (relocáveis) estivessem localizados em qualquer lugar com memória de 1MB alinhada aos limites de "parágrafo" de 16 Bytes (o deslocamento de 4 bits no cálculo acima). Tais programas podem endereçar somente 64KB. Obviamente, o sistema operacional altera o registrador de segmento adequadamente em uma alternância de contexto.

Parece claro que, se o seu programa manipulou os registros de segmento, talvez para que ele pudesse usar mais de 64 KB de memória, ele não poderia ser realocado dessa maneira.

Intel 8086/8088 program are sometimes relocatable or, more precisely, position independent, if they do not attempt to manipulate the segment registers. In this case, the OS can load the program anywhere in available memory on a 16 byte boundary, set the segment registers accordingly, and the program will run correctly. In this mode, however, the program only has access to four 64KB segments of memory.

It is also possible to be position independent and have access to more memory of the program takes the approach of biasing all segment manipulations to the initial values present at program startup.

Note that this discussion does not take into account the possibility that the load module format is, in itself, relocatable, requiring relocation by the loader. That is a third possibility.

De link

The 8086 object module formats permit specification of relocatable memory imaqes that may be linked to one another. Capabilities are provided that allow efficient use of the memory mapping facilities of the 8086 microprocessor.

8086 FORMATOS DE MÓDULO DE OBJETOS RELOCÁVEIS | Uma especificação técnica da Intel

e

link

    
por 25.10.2012 / 12:02