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 |
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.
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().