|
|
DataMuseum.dkPresents historical artifacts from the history of: Bogika Butler |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Bogika Butler Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: TextFile
Names: »SECTION.BAK«
└─⟦6661ddda9⟧ Bits:30009789/_.ft.Ibm2.50007339.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »SECTION.BAK«
I det følgende diskuteres hvorvidt et modul bør kunne rumme
flere sektioner pr. segment. Dernæst angives strukturen for
objektmoduler (oplæg til), og endelig angives kommando-
sprogets udformning.
Først lidt terminologi:
Et segment er i denne forbindelse et adresserum, hvis indhold
relokeres særskilt.
En sektion er en tekststump, som skal placeres i et segment,
og som forefindes tekstuelt samlet. Sektioner hørende til
samme segment relokeres ud fra samme oprindelsespunkt
(eng: origin).
Et modul er en enhed, som lader sig oversætte/assemblere
særskilt.
I symbolsk maskinkode SKAL (jvf. AC) det være muligt at
angive flere (end 1) sektioner hørende til samme segment i
et modul. Om dette også skal være muligt i objektkodesproget,
kommer ud på et med, om det skal være assembler eller linker,
der samler sektionerne segmentvis.
Separat oversættelse indføres af to årsager. 1) For at
kunne blande moduler skrevet i forskellige sprog, 2) for
at mindske oversættelsesbyrden ved ændringer i et enkelt eller
få moduler og 3) for at gøre moduler tilgængelige uden at gøre
de tilsvarende kildetekster tilgængelige. Af 2) følger, at
sammenkædningen gerne skal være
hurtig, medens oversættelsen er mindre tidskritisk. Dette taler
for at placere sektionssamlefunktionen i assembleren.
For linkeren er det klart en fordel at alle sektioners
omfang og position fremgår af modulets hoved, fordi den så kan
fastlægge "memory map" på grundlag af dette alene (specielt
uden først at læse "object image"). Dette strider naturligvis
mod, hvad der er mest hensigtsmæssigt mht. assembleren. Fordi
det dermed kræves, at hovedet skal kunne rumme et vilkårligt
antal sektionsbeskrivelser er man afskåret fra at udføre
"backpatching" på pladelageret og demed undgå anden passage.
Objektmoduler.
Her benyttes metasymbolerne ::= < > >+ og >* .
::= og < > er som i sædvanlig BNF, medens < >+ og < >* betegner
lister med henholdsvis mindst et element og mindst nul elementer.
Valg mellem alternativer (!) benyttes ikke her.
1 <object file> ::= <object module>+
2 <object module> ::= <om-head><om-image><om-import><om-export><om-rld>
3 <om-head> ::= <id rec><name><size rec><#segments><segm. descr.>*
4 <id rec> ::= <format><org><sys><date>
5 <format> ::= i32
5 <org> ::= i16
5 <sys> ::= i16
5 <date> ::= i32
4 <name> ::= <symbol>
4 <size rec> ::= <sz-head><sz-image><sz-import><sz-export><sz-rld>
5 <sz-head> ::= i32
5 <sz-image> ::= i32
5 <sz-import> ::= i32
5 <sz-export> ::= i32
5 <sz-rld> ::= i32
4 <#segments> ::= i32
4 <segm. descr.> ::= <sd-size><nullification><relocatability>
5 <sd-size> ::= i32
5 <nullification> ::= bit
5 <relocatability> ::= bit
4 <om-image> ::= <relocation unit>*
5 <relocation unit> ::= i16
4 <om-import> ::= <#imported><esd rec>*
5 <#imported> ::= i32
5 <esd rec> ::= <es-kind><es-item><es-name>
4 <om-export> ::= <#exported><esd rec>*
5 <#exported> ::= i32
4 <om-rld> ::= <relocation indicator>*
5 <relocation indicator> ::= bit
«eof»