|
|
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: 12416 (0x3080)
Types: TextFile
Names: »OBJFORM.BAK«
└─⟦6661ddda9⟧ Bits:30009789/_.ft.Ibm2.50007339.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »OBJFORM.BAK«
$#venstre240
$#højre1680
$#indryk120
$#linieafstand10
$#h/f-venstre216
$#h/f-højre1704
$#h/f-linieafstand10
$#hoved-højde60
$#fod-højde40
$#lige-margen0
$#sidenummer1
$#hovedav ^BMETANIC Aps.
$#hovedam
$#hovedah 1986.03.07
$#hovedbv LGJ
$#hovedbm OBJEKTFILFORMAT
$#hovedbh
$#hovedcv V1.0
$#hovedcm
$#hovedch Side #
$#hoveddm ______________________________________________________________
$#formatter
^UDokumentrevision:^u
1986.03.07 V1.0 Initialversion.
^UIndhold:^u
$#liste 72
$#punkt 1.
Introduktion.
$#punkt 2.
Metasprog.
$#punkt 3.
Syntaks.
$#punkt 4.
Semantik.
$#punkt 5.
Implementationsafhængige forhold.
$#liste 0
^U1. Introduktion.^u
I dette dokument defineres formatet for objektfiler til det unavngivne
styresystem (baseret på NCR's EOS) til Metanics unavngivne datamat (baseret
på Zilogs Z80.000 CPU). Objekt^-filer består af objektmoduler opdelt i segmenter.
Et ob^-jektmodul er altid relokerbart og indeholder information om
symbole^-rs im- og eksport samt om modulets relokering, hvor^-for det er
muligt, at sammenkæde
sådanne moduler til et nyt relokerbart objektmodul med et program kaldet LINK.
$#blok-start
^U2. Metasprog.^u
Objektfilformatets syntaks angives ved en udvidet ^-^-BNF-notation, som forklares
her. Nonterminaler ("< >") og de^-finerende lighedtegn ("::=") noteres
på sædvanlig vis, men i stedet for lodret streg ("ø") benyttes udråbstegn
("!") som valgsymbol. Sekvens angives som sædvanligt ved juxta^-posi^-tion, medens
gentagelse af samme nonterminal <a> noteres på en af følgende måder:
$#kopier
<a>#(n)
<a>#(x..y)
<a>#(x...)
$#formatter
I første tilfælde gentages <a> netop n gange. I det andet tilfælde gentages <a>
et antal gange, som er større end el^-ler lig med x og mindre end eller lig med
y. I sidste til^-fælde gentages <a> et antal gange, som er større end eller lig
med x, men ikke opadtil begrænset. En nedre grænse find^-es altid - evt. nul.
Såvel n, som x og y kan være udtryk med nontermi^-naler, der indgår i
objektsproget, og/eller med ^-^-numeriske literaler fra metasproget.
$#blok-slut
$#ny-side
$#blok-start
$#kopier
^U3. Syntaks.^u
1 <object file> ::= <of-format><of-object module>#(1...)
2 <of-format> ::= <i32>
2 <of-object module> ::= <om-format><om-head>
<om-segment descriptors><om-export>
<om-ext-import><om-segments>
3 <om-format> ::= <i32>
3 <om-head> ::= <omh-index><omh-module name>
4 <omh-index> ::= <omh-ModuleSize><omh-NooSegments>
<omh-NooExpSymbols><omh-NooExiSymbols>
5 <omh-ModuleSize> ::= <i32>
5 <omh-NooSegments> ::= <i32>
5 <omh-NooExpSymbols> ::= <i32>
5 <omh-NooExiSymbols> ::= <i32>
4 <omh-Module Name> ::= <Symbol>
3 <om-segment descriptors> ::= <sgd-segment desciptor>#(
<omh-NooSegments>)
4 <sgd-segment descriptor> ::= <sgd-image size>
<sgd-overrun store size>
5 <sgd-image size> ::= <i32>
5 <sgd-overrun store size> ::= <i32>
3 <om-export> ::= <exp-export record>#(<omh-NooExpSymbols>)
4 <exp-export record> ::= <exp-relocation indicator>
<exp-item><exp-name>
5 <exp-relocation indicator> ::= <i8>
5 <exp-item> ::= <i32>
5 <exp-name> ::= <symbol>
3 <om-ext-import> ::= <exi-name>#(<omh-NooExiSymbols>)
3 <om-segments> ::= <sgm-segment>#(<omh-NooSegments>)
4 <sgm-segment> ::= <sgm-image>
<sgm-relocation import directory>
<sgm-overrun store>
5 <sgm-image> ::= <sgm-image unit>#(4*<sgd-imageSize>)
6 <sgm-image unit> ::= <i8>
5 <sgm-relocation import directory> ::= <sgm-rid unit>#(
sgd-imageSize..4*<sgd-imageSize>)
6 <sgm-rid unit> ::= <rid-prefix> ! <rid-prefix><rid-index>
7 <rid-prefix> ::= <rid-relocatable><rid-importable>
8 <rid-relocatable> ::= <bit>
8 <rid-importable> ::= <bit>
7 <rid-index> ::= <i6>
5 <sgm-overrun store> ::= <sgm-ovr index>#(
0..<omh-NooExiSymbols>)
6 <sgm-ovr index> ::= <i32>
$#blok-slut
$#blok-start
<symbol> ::= <length><character>#(<length>)
<length> ::= <i8>
<character> ::= <i8>
<i32> ::= <bit>#(32)
<i8> ::= <bit>#(8)
<i6> ::= <bit>#(6)
<bit> ::= 0 ! 1
$#blok-slut
$#formatter
^U4. Semantik.^u
Semantikken for objektfilformatet beskrives her ved at give en fortolkning af
de væsentlige nonterminal i uformelt sprog (dansk). Der appelleres til
læserens velvilje.
^K<i6>,<i8>,<i32>.^k
Disse non-terminaler repræsenterer heltal uden fortegn med værdiområder
svarende til henholdsvis 6,8 og 32 bit. F.eks. fortolkes <i6> som en af
værdierne i intervallet 0..63.
^K<character>.^k
Denne non-terminal repræsenterer heltal fortolket som tegn f.eks. men
ikke nødvendigvis fra ascii-alfabetet. Enhver værdi i intervallet
0..255 kan benyttes. Programmer, som forsøger at udskrive disse værdier,
bør undertrykke tegn, som med den anvendte kollationeringssekvens ikke
er trykbare (f.eks. ascii styretegn) eller gyldige (255 er f.eks. ikke
et ascii tegn).
^K<of-format>.^k
Kode, som identificerer det her beskrevne
objektfilformat. Programmer, som læser objektfiler bør kontrollere, at
of-format antager den korrekte værdi. Værdiområde: <i32>. Be^-tydning:
$#liste 240
$#punkt 1:
Det her beskrevne objektfilformat.
$#punkt Øvrige værdier:
$#
Ikke benyttet, reserveret.
$#liste 0
^K<of-object module>.^k
Et objektmodul er enhden for separat oversættelse, og mindst eet sådant
skal indgå i en objektfil.
^K<om-format>.^k
Kode, som identificerer det her beskrevne
objektmodulformat. Programmer, som læser objektfiler bør kontrollere, at
om-format antager den korrekte værdi. Værdiområde: <i32>. Be^-tydning:
$#liste 240
$#punkt 1:
Det her beskrevne objektmodulformat.
$#punkt Øvrige værdier:
$#
Ikke benyttet, reserveret.
$#liste 0
^K<omh-moduleSize>.^k
Angiver objektmodulets størrelse i antal oktetter. Informa^-tionen er
redundant, idet den kan findes ved fortolkning af modulets øvrige
indhold.
Værdiområde: 0..2**31-1. Bemærk at mest betydende bit ikke må benyttes.
^K<omh-NooSegments>.^k
Angiver antallet af segmenter i objektmodulet.
Værdiområde: 0..63. Segmenter nummereres 1..63. Værdien nul angiver, at
objektmodulet ingen sektioner indeholder.
^K<omh-NooExpSymbols>.^k
Angiver antallet af symboler, som eksporteres af objekt^-modulet.
Værdiområde: 0..2**31-1. Bemærk at mest betydende bit ikke må benyttes.
^K<omh-NooExiSymbols>.^k
Angiver antallet af eksterne importsymboler. Dvs. antallet af distinkte
symboler, som importeres af objektmodulet.
Vær^-diområde: 0..2**31-1. Bemærk at mest betydende bit ikke må benyttes.
^K<omh-Module Name>.^k
Angiver objektmodulets navn. Et objektmodul kan (princi^-pielt) have vilkårligt
mange indhopspunkter (eng: entry ^-^-points). Disse eksporteres på samme måde
som alle øvrige eksporterede symboler og kun på denne måde. Et objektmoduls
navn må gerne være identisk med navnet på et symbol, som modulet selv
eksporterer.
^K<sgd-image size>.^k
Angiver for det tilsvarende segment størrelsen af sgm-image i
enheder af 32 bits og størrelsen af sgm-rid i oktetter.
Værdiområde: 0..2**31-1. Bemærk at mest betydende bit ikke må benyttes.
^K<sgd-overrun store size>.^k
Angiver for det tilsvarende segment størrelsen af ^-^-sgm-overrun store i
oktetter.
Værdiområde: 0..2**31-1. Be^-mærk at mest betydende bit ikke må benyttes.
^K<om-export>.^k
Liste over symboler med tilhørende værdier og relokerings^-information, som
eksporteres af objektmodulet. Værdierne fremgår helt af om-export-delen
af objektmodulet, og ved^-rører ikke om-segments. Listens elementer skal
være ordnet efter exp-name i stigende orden. (aa før aab før aba).
$#ny-side
^K<exp-relocation indicator>.^k
Angiver relokeringsbasis for det pågældende eksporterede symbol.
Værdiområde: 0..63. Betydning:
$#liste 240
$#punkt 0:
Symbolet er absolut (skal ikke relokeres).
$#punkt 1..63:
Symbolet relokeres med basis i adresse 0 det ^-^-segment, hvis
nummer angives, i det eksporterende objektmodul.
$#liste 0
^K<exp-item>.^k
Hvis det pågældende eksporterede symbol er absolut, angiver exp-item den
værdi, som skal eksporteres. Er symbolet relo^-kerbart angiver exp-item
oktet-adressen (relativt til seg^-mentstart i det exp-relocationindicator angivne
segment i det eksporterende objektmodul) på den 32 bit-størrelse, ^-^-hvortil
relokeringskonstanten skal adderes (modulo 2**32). Eksporterede og importerede
værdier er altid af typen <i32>.
^K<exp-name>.^k
Angiver navnet på det pågældende eksporterede symbol.
^K<om-ext-import>.^k
Liste over navne på symboler, som importeres af objektmodul^-et. Listens
elementer nummereres fortløbende fra 1.
^K<om-segments>.^k
Omfatter sgm-image, -rid og -overrun store for hvert ^-^-segment. Segmenterne
følger i samme antal og rækkefølge, som de tilsvarende segmentbeskrivelser
om-segmentdescriptor. Korrespondancen segmentbeskrivelse og -indhold
etableres altså ved disses position i listerne.
^K<sgm-image>.^k
Selve objektbilledet, som skal fortolkes af måldatamaten.
^K<sgm-image unit>.^k
Mindste enhed af sgm-image, der kan behandles som een enhed. En sgm-image
unit kan enten være absolut eller indgå i en quadimageunit (32 bit),
som enten er relokerbar eller til hvilken, der skal importeres.
^K<sgm-relocation import directory>.^k
Katalog, som angiver fortolkningen af sgm-image såvel som den fortsatte
fortolkning af kataloget selv. Kataloget ind^-ledes altid med
et rid-prefix.
Efter et rid-prefix følger et rid-index hvis netop en af
rid-relocatable og rid-importable er sand. Ellers følger et nyt rid-prefix.
Efter et rid-index følger altid et rid-prefix.
^K<rid-prefix>.^k
Angiver fortolkningen af den tilsvarende sgm-image unit og de følgende
indtil 6 bit af rid-relocation import directory efter følgende regler:
$#blok-start
$#kopier
-----------------------------------------------------------
rid-prefix: !
!
relocatable: ! 0 0 1 1
!
importable : ! 0 1 0 1
!
-----------------------------------------------------------
sgm-image: !
tilsvarende !
image unit : ! ABS IMP REL Invalid
!
følgende 3 !
image units: ! Fremgår af IMP REL Invalid
! følgende
! rid-prefix
! mv.
!
Fortolkning af !
følgende bits i !
sgm-relocation !
import directory: ! Prefix Index Index Invalid
!
-----------------------------------------------------------
$#formatter
$#blok-slut
^K<rid-relocatable>.^k
Angiver ved positiv logik, hvorvidt den tilsvarende sgm-image unit indleder
en quadimage unit, der er relokerbar.
^K<rid-importable>.^k
Angiver ved positiv logik, hvorvidt den tilsvarende sgm-image unit indleder
en quadimage unit, hvortil der importe^-res.
^K<rid-index>.^k
Angiver afhængigt af værdien direkte eller indirekte et ^-^-indeks til
om-ext-import. Indekset udpeger navnet på det symbol, hvis værdi skal
importeres og adderes (modulo 2**32) til den tilsvarende quadimageunit.
Værdiområde: 0..63. Be^-tydning:
$#liste 240
$#punkt 0:
Indirekte henvisning til næste element i ^-^-sgm-overrun store.
$#punkt 1..63:
Direkte henvisning til om-ext-import.
$#liste 0
^K<sgm-ovr index>.^k
Angiver indeks til om-ext-import, hvis dette er større end 63.
Værdiområde: 64..2**31-1.
^U5 Implementationsafhængige forhold.^u
Objektfilerne implementeres i CP/M-versionen efter retnings^-linierne, der
gælder for Propero Pascal "non-text" filer med elementtype 0..255. Det
vil sige, at filerne skrives i blok^-ke a 128 oktetter, hvoraf de to sidste
er andenordensinfor^-mation.
Filerne skrives i "bit forward format", hvilket vil sige, at uanset
hvilken strukturel enhed (f.eks. 32 bit hel^-tal eller 6 bit heltal), der
optræder i en fil, vil den mest betydende bit stå forrest i filen efterfulgt
af de øvrige bit i aftagende orden.
«eof»