Struktura spustitelneho souboru v TUOXu

Autor: Zdenek SAWA


Spustitelny soubor v TUOXu ma 3 casti:

Cast

Popis

Delka

Hlavicka hlavicka s udaji o programu 24 B (=18h)
TEXT kod programu az 64 kB (zarovnano na nasobek 16 B)
DATA inicializovana data az 64 kB

Struktura hlavicky:

Offset

Popis

0000h magic number (aktualni hodnota je 12345678h)
0004h rezervovano (mela by to byt 0)
0008h velikost textoveho segmentu v bytech (mel by to byt nasobek 16, maximalni povolena hodnota je 65520 (=FFF0h))
000Ch velikost inicializovanych dat v bytech (nemusi to byt nasobek 16)
0010h velikost BSS (neinicializovana data v bytech) (nemusi to byt nasobek 16)
0014h celkova pamet alokovana pro progtam (TEXT, DATA, BSS, GAP, STACK) v bytech (maximalni povolena hodnota je 131040 (=1FFE0h))

Pozn: Vsechny hodnoty v hlavicce jsou 4 bytove, ulozene v low-endian poradi (Intel) - tj. nejmene vyznamny byte jako prvni.

Soucet velikosti inicializovanych a neinicializovanych dat nesmi prekrocit 64 kB. Dale musi platit, ze soucet velikosti kodu, inicializovanych a neinicializovanych dat je mensi nez celkova pamet alokovana pro program.

Start programu:

Zacatek TEXTu odpovida offsetu 0000h v kodovem segmentu. Zacatek inicializovanych dat odpovida offsetu 0000h v datovem segmentu. Ve stejnem segmentu nasleduji za inicializovanymi daty neinicializovana data, GAP a stack. Datovy a zasobnikovy segment jsou nastaveny na stejnou adresu.

Program zacina od adresy 0000h v kodovem segmentu, predpoklada se, ze segmentove registry CS, DS, SS jsou jiz nastaveny, stejne tak jako ukazatel na zasobnik SP, ostatni registry mohou byt neinicializovane. Na zasobniku se jiz predpokladaji argumenty pro funkci main().