l2 Object Files

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 35

PH†N M—M H› THÈNG

T›P ÈI T×ÑNG


Nguy¹n Húu ùc
Vi»n Cæng ngh» thæng tin v  Truy·n thæng
Tr÷íng ¤i håc B¡ch khoa H  Nëi
T»p èi t÷ñng l  g¼?

T»p èi t÷ñng l  nhúng t»p nhà ph¥n ÷ñc sinh ra tø qu¡ tr¼nh bi¶n
dàch ho°c hñp dàch
C¡c t»p èi t÷ñng câ thº k¸t hñp l¤i (bði tr¼nh li¶n k¸t - linker) º t¤o
n¶n mët t»p èi t÷ñng duy nh§t
T»p èi t÷ñng câ thº ÷ñc n¤p l¶n bë nhî (bði tr¼nh n¤p - loader) º
thüc thi ho°c º c¡c ch÷ìng tr¼nh kh¡c sû döng

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 2 / 35
Möc ti¶u v  nëi dung cõa b i gi£ng
Möc ti¶u:
Hiºu ÷ñc vai trá cõa c¡c t»p èi t÷ñng
Hiºu c§u tróc cõa c¡c t»p èi t÷ñng v  nhúng cì ch¸ tê chùc cõa
chóng
d÷îi h¤n ch¸ ph¦n cùng
trong vi»c c§p ph¡t bë nhî
trong vi»c t¡i ành và
Nëi dung
T¼m hiºu c§u tróc cõa mët sè t»p èi t÷ñng phê bi¸n
MS-DOS COM
MS-DOS EXE
UNIX a.out
UNIX ELF
T¼m hiºu v· v§n · c§p ph¡t bë nhî cho t»p èi t÷ñng
T¼m hiºu v· c¡c kÿ thuªt t¡i ành và cho t»p èi t÷ñng

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 3 / 35
Ph¥n lo¤i m¢ èi t÷ñng

Li¶n k¸t ÷ñc (linkable)


câ thº li¶n k¸t vîi c¡c t»p èi t÷ñng kh¡c
l  ¦u v o cho tr¼nh li¶n k¸t
chùa c¡c kþ hi»u to n cöc v  thæng tin t¡i ành và cho chóng
Thüc thi ÷ñc (executable)
câ thº n¤p l¶n bë nhî v  thüc thi
th÷íng chùa m¢ ph¥n trang º d¹ d ng ¡nh x¤ l¶n khæng gian àa ch¿
khæng chùa kþ hi»u
khæng câ (ho°c r§t ½t) thæng tin t¡i ành và
N¤p ÷ñc (loadable)
câ thº n¤p l¶n bë nhî v  ÷ñc sû döng bði c¡c ch÷ìng tr¼nh kh¡c (th÷
vi»n)
li¶n k¸t t¾nh: khæng chùa kþ hi»u
li¶n k¸t ëng: chùa kþ hi»u v  thæng tin t¡i ành và

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 4 / 35
Nëi dung t»p èi t÷ñng
Header: Thæng tin chung v· to n bë t»p èi t÷ñng
K½ch th÷îc tøng o¤n m¢
T¶n t»p èi t÷ñng
Ng y t¤o
M¢ èi t÷ñng
M¢ thüc thi
Dú li»u
Thæng tin t¡i ành và
C¡c và tr½ tr¶n m¢ èi t÷ñng c¦n ph£i i·u ch¿nh l¤i khi bë li¶n k¸t thay
êi àa ch¿ gèc cõa o¤n m¢ â
Kþ hi»u
Kþ hi»u to n cöc ÷ñc ành ngh¾a trong module (export)
Kþ hi»u tham chi¸u ra b¶n ngo i module (import)
Kþ hi»u ÷ñc tr¼nh li¶n k¸t ành ngh¾a
Thæng tin hé trñ gï rèi
Nëi dung t»p nguçn v  ch¿ sè dáng
C¡c kþ hi»u sû döng cöc bë trong module
C§u tróc dú li»u ÷ñc sû döng trong m¢ èi t÷ñng
Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 5 / 35
C¡c d¤ng m¢ èi t÷ñng

MS-DOS COM (Null Object Format)


MS-DOS EXE (MZ)
UNIX a.out
UNIX ELF (Executable and Linking Format)

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 6 / 35
Qu£n lþ bë nhî tr¶n bë vi xû lþ 8086

Bë xû lþ 8086 sû döng c¡c thanh ghi 16 bit º ¡nh àa ch¿ cho
ch÷ìng tr¼nh
VD. Con trä l»nh IP, con trä ng«n x¸p SP
Giîi h¤n 64K bë nhî
º sû döng ÷ñc khæng gian bë nhî lîn hìn 64K ph£i k¸t hñp th¶m
c¡c thanh ghi o¤n 16 bit
Thanh ghi o¤n cho m¢ ch÷ìng tr¼nh CS
Thanh ghi o¤n cho ng«n x¸p SS
Thanh ghi o¤n cho dú li»u DS, ES
Chuyºn êi àa ch¿
(segment:offset) → àa ch¿ tuy»t èi = (segment lsh 4) + offset
Truy nhªp tèi a 1MB bë nhî

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 7 / 35
àa ch¿ o¤n

V½ dö
CS:IP trä tîi àa ch¿ l»nh
CS=0x1234, IP=0x2140
àa ch¿ tuy»t èi: 0x12340 + 0x2140 = 0x14480

SS:SP trä tîi ¿nh ng«n x¸p


SS=0x8000, SP=0xFFFF
àa ch¿ tuy»t èi: 0x80000 + 0xFFFF = 0x8FFFF
Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 8 / 35
Qu£n lþ bë nhî tr¶n MS-DOS

T§t c£ c¡c ch÷ìng tr¼nh ÷ñc n¤p l¶n tr¶n còng mët khæng gian àa
ch¿
Khi mët ch÷ìng tr¼nh ÷ñc n¤p
Mët vòng bë nhî mîi ÷ñc c§p ph¡t ngay sau vòng bë nhî ¢ sû
döng, tr¶n ¿nh vòng bë nhî tü do
PSP(program segment prefix, 256 bytes) ÷ñc t¤o ra tr¶n ¦u vòng bë
nhî mîi n y
Ch÷¡ thæng tin v· k½ch th÷îc vòng bë nhî ÷ñc c§p ph¡t, con trä tîi
PSP cõa ch÷ìng tr¼nh gåi,...
N¤p v  thüc thi ch÷ìng tr¼nh
Ch÷ìng tr¼nh khæng ÷ñc n¤p t¤i mët àa ch¿ cè ành

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 9 / 35
Qu£n lþ bë nhî tr¶n MS-DOS

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 10 / 35
T»p èi t÷ñng MS-DOS COM (Null Object Format)

°c iºm
ìn gi£n
Ch¿ chùa m¢ ch÷ìng tr¼nh (m¢ thüc thi, dú li»u), khæng chùa th¶m c¡c
thæng tin kh¡c
Khi mët ch÷ìng tr¼nh ÷ñc n¤p
Mët vòng bë nhî mîi ÷ñc c§p ph¡t ngay sau vòng bë nhî ¢ sû
döng, tr¶n ¿nh vòng bë nhî tü do
PSP(program segment prefix, 256 bytes) ÷ñc t¤o ra tr¶n ¦u vòng bë
nhî mîi n y
Ch÷¡ thæng tin v· k½ch th÷îc vòng bë nhî ÷ñc c§p ph¡t, con trä tîi
PSP cõa ch÷ìng tr¼nh gåi,...
N¤p v  thüc thi ch÷ìng tr¼nh
Ch÷ìng tr¼nh khæng ÷ñc n¤p t¤i mët àa ch¿ cè ành

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 11 / 35
T»p èi t÷ñng MS-DOS COM

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 12 / 35
T»p èi t÷ñng MS-DOS COM

N¤p v  thüc thi (do h» i·u h nh thüc hi»n)


X¡c ành àa ch¿ n¤p cõa ch÷ìng tr¼nh
Düng PSP tr¶n bë nhî
N¤p ch÷ìng tr¼nh b­t ¦u tø àa ch¿ offset 0x0100
Khði t¤o c¡c thanh ghi o¤n v  con trä ng«n x¸p (SP)
Thüc hi»n ch÷ìng tr¼nh tø àa ch¿ 0x0100
Ch÷ìng tr¼nh câ thº ÷ñc n¤p l¶n vòng bë nhî b§t ký (do h» i·u
h nh quy¸t ành b¬ng c¡ch thi¸t lªp c¡c thanh ghi o¤n)
K½ch th÷îc giîi h¤n trong 64KB

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 13 / 35
T»p èi t÷ñng MS-DOS EXE (MZ)
Chùa b£ng t¡i ành và
K½ch th÷îc câ thº lîn hìn 64KB

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 14 / 35
T»p èi t÷ñng MS-DOS EXE

C§u tróc header


K½ch th÷îc (header, b£ng t¡i ành và, ch÷ìng tr¼nh, dú li»u)
Gi¡ trà khði t¤o cho SP v  IP
minalloc l÷u k½ch th÷îc cõa vòng BBS
maxalloc
...
Ch÷ìng tr¼nh v  dú li»u
÷ñc k¸t hñp l¤i
Ri¶ng vòng BBS ÷ñc x¡c ành bði minalloc

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 15 / 35
T»p èi t÷ñng MS-DOS EXE

B£ng t¡i ành và


àa ch¿ n¤p ch÷ìng tr¼nh khæng ÷ñc x¡c ành khi bi¶n dàch
Tr¼nh bi¶n dàch sinh m¢ cho ch÷ìng tr¼nh b­t ¦u tø àa ch¿ 0x0000
C¡c l»nh nh£y xa ho°c gåi xa (qua bi¶n giîi cõa 1 o¤n) ÷ñc thi¸t lªp
bði àa ch¿ thüc t¸ (sinh bði ch÷ìng tr¼nh dàch

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 16 / 35
T»p èi t÷ñng MS-DOS EXE

N¤p v  thüc thi (h» i·u h nh thüc hi»n)


åc header v  x¡c ành k½ch th÷îc bë nhî s³ c§p ph¡t cho ch÷ìng
tr¼nh
X¥y düng PSP tr¶n bë nhî
N¤p ch÷ìng tr¼nh (size = nblocks * 512 + lastsize)
T¡i ành và
Và tr½: relocpos
Sè l÷ñng: nreloc
Vi¸t l¤i c¡c to¡n h¤ng cõa l»nh ch÷ìng tr¼nh (°c bi»t l  ph¦n àa ch¿
o¤n) ÷ñc mæ t£ trong b£ng t¡i ành và
Khði t¤o SP, IP v  thüc hi»n ch÷ìng tr¼nh

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 17 / 35
MS-DOS EXE header

char signature[2] = MZ;// magic number


short lastsize; // size of data in final block
short nblocks; // number of 512-byte-block
short nreloc; // number of relocation entry
short hdrsize; // size of file header(in 16byte praragraph)
short minalloc; // minimum size of additional memory
short maxalloc; // maximum size of additional memory
void far *sp; // initial stack pointer
short checksum; // 1's complement of sum of file content
void far *ip; // initial instruction pointer
short relocpos; // location of fixup-table for relocation
short noverlay; // number for overlay(0 for normal program)
char extra[]; // extra for overlay
void far *relocs[]; // pointer to relocation ently

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 18 / 35
T»p èi t÷ñng a.out (NMAGIC)

L  khuæn d¤ng t»p èi t÷ñng truy·n thèng cõa UNIX, sû döng rëng
r¢i tø nhúng n«m 1990
Ch÷ìng tr¼nh v  dú li»u ÷ñc qu£n lþ ëc lªp
Ch÷ìng tr¼nh câ thº ÷ñc ph¥n chia th nh c¡c trang ch¿ åc ho°c c¡c
trang åc/ghi. £m b£o t½nh an to n
D¹ d ng chia s´
fork: Chia s´ ch÷ìng tr¼nh
thread: Chia s´ ch÷ìng tr¼nh v  dú li»u, ng«n x¸p ri¶ng
vthread: Chia s´ måi thù
iºm v o méi ch÷ìng tr¼nh l  x¡c ành do hé trñ ch¸ ë bë nhî £o
(ph¦n cùng thüc hi»n vi»c t¡i ành và)

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 19 / 35
T»p èi t÷ñng UNIX a.out

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 20 / 35
a.out header

int a_magic; // magic number


int a_text; // size of text segment
int a_data; // size of initialized data
int a_bss; // size of uninitialized data
int a_syms; // size of symbol table
int a_entry; // entry point
int a_trsize; // size of relocation information of text
int a_drsize; // size of relocation information of data

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 21 / 35
C¡c ph¥n o¤n bë nhî trong t»p a.out

o¤n ch÷ìng tr¼nh (text) : chùa m¢ ch÷ìng tr¼nh


o¤n dú li»u (data): Chùa dú li»u ÷ñc khði t¤o
C¡c o¤n kh¡c (khæng c¦n thi¸t cho thüc thi)
B£ng t¡i ành và cho ch÷ìng tr¼nh
B£ng t¡i ành và cho dú li»u
B£ng kþ hi»u
B£ng t¶n

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 22 / 35
N¤p v  thüc thi t»p èi t÷ñng a.out

åc header v  t½nh to¡n k½ch th÷îc dú li»u phò hñp


Kiºm tra o¤n m¢ ch÷ìng tr¼nh xem câ ÷ñc chia s´ bði c¡c ti¸n
tr¼nh kh¡c khæng
N¸u câ, ¡nh x¤ sang vòng bë nhî chia s´
N¸u khæng, c§p ph¡t vòng bë nhî mîi cho o¤n m¢
Chu©n bà vòng dú li»u ÷ñc khði t¤o v  khæng khði t¤o
åc v  sao ch²p dú li»u khði t¤o
Xâa dú li»u ch÷a khði t¤o b¬ng 0
T¤o ng«n x¸p
Thi¸t lªp gi¡ trà cho c¡c thanh ghi v  chuyºn i·u khiºn ¸n ¦u
ch÷ìng tr¼nh

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 23 / 35
C¡c d¤ng d¨n xu§t cõa t»p èi t÷ñng a.out

ZMAGIC : Thi¸t k¸ cho cì ch¸ ph¥n trang


ành d¤ng theo trang (4KB)
H» i·u h nh câ thº l÷u/phöc hçi nguy¶n d¤ng £nh bë nhî l¶n ¾a
QMAGIC
Lo¤i bä nhúng d÷ thøa trong header v  c¡c o¤n
H» i·u h nh khæng ¡nh x¤ trang 0 º tr¡nh hi»u ùng con trä NULL

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 24 / 35
Khuæn d¤ng t¡i ành và cõa a.out

Khuæn d¤ng t¡i ành và cõa a.out (relocatable a.out) l  khuæn d¤ng
t»p èi t÷ñng hé trñ t½nh n«ng li¶n k¸t (t»p .o)
Chùa c¡c thæng tin
thæng tin t¡i ành và cho m¢ ch÷ìng tr¼nh
thæng tin t¡i ành và cho dú li»u
b£ng kþ hi»u
b£ng t¶n
Khæng hé trñ
Li¶n k¸t ëng
Ngæn ngú h÷îng èi t÷ñng (VD. C++)

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 25 / 35
Khuæn d¤ng t¡i ành và cõa a.out
file
+--------+
| header |
+--------+
|text |
+--------+
|data |
+--------+
|reloc. | ... thæng tin cho vi»c t¡i ành và
|for text| (ch¿ cho c¡c kþ hi»u ch÷a ành ngh¾a)
+--------+ - àa ch¿ (offset cõa text/data seg.)
|reloc. | - text seg.? hay data seg.?
|for data| - con trä tîi b£ng kþ hi»u
+--------+
|symbol | ... Thæng tin v· kþ hi»u t¡i ành và (h m/bi¸n)
| table| - àa ch¿(offset tr¶n b£ng x¥u kþ tü)
+--------+ - lo¤i (to n cöc hay cöc bë)
|string |
| table| ... Nh¢n cõa kþ hi»u (h m/bi¸n)
+--------+

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 26 / 35
T»p èi t÷ñng ELF (Executable and Linkable Format)

Câ thº li¶n k¸t, câ thº thüc thi, v  câ thº n¤p


Hé trñ li¶n k¸t ëng
Hé trñ c¡c ngæn ngú lªp tr¼nh h÷îng èi t÷ñng
header gi u thæng tin
Ki¸n tróc
Thù tü byte
32bit/64bit

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 27 / 35
C§u tróc t»p èi t÷ñng ELF
File
+----------------+
| ELF header |
+----------------+
|Program header |------+
| Table| s
for +----------------+ e
linker s----> + | <--- g for
e----> + | m loader
c +----------------+ e
t----> + | <--- n
i----> + | t
o| +----------------+ s
n+----> + | <----+
s| +----------------+
+----- |Section header |
| Table|
+----------------+
Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 28 / 35
ELF header

char magic[4] = "\177ELF"; // Magic number


char class; // K½ch th÷îc àa ch¿ (1:32bit, 2:64bit)
char byteorder; // Thù tü byte(1:little endian, 2:big endian)
char hversion; // phi¶n b£n header(= 1)
char pad[9];
short filetype; // 1:relocatable,2:executable,3:shared object,4:core image
short archtype; // Ki¸n tróc(2:SPARC, 3:x86, 4:68K, ...)
int fversion; // phi¶n b£n t»p(= 1)
int entry; // iºm b­t ¦u n¸u l  t»p thüc thi
int phdrpos; // Và tr½ cõa program header, ho°c 0
int shdrpos; // Và tr½ cõa section header, ho°c 0
int flags; // Cí thist lªp cho tøng ki¸n tróc cö thº (th÷íng l  0)
short hdrsize; // K½ch th÷îc cõa ELF header
short phdrent; // K½ch th÷îc 1 möc trong program header
short phdrcnt; // Sè möc trong program header, ho°c 0
short shdrent; // K½ch th÷îc 1 möc trong section header
short shdrcnt; // Sè möc trong section header, ho°c 0
short strsec; // Sè thù tü cõa vòng chùa t¶n c¡c vòng

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 29 / 35
Ph¥n vòng trong t»p èi t÷ñng ELF

Ch÷ìng tr¼nh v  dú li»u ÷ñc ph¥n th nh nhi·u vòng, thuªn ti»n cho
pha li¶n k¸t
.text: Vòng m¢ ch÷ìng tr¼nh
.init: Vòng m¢ ch÷ìng tr¼nh cho khði t¤o ch÷ìng tr¼nh
.fini: Vòng m¢ ch÷ìng tr¼nh cho k¸t thóc ch÷ìng tr¼nh
.data: Vòng dú li»u
.bbs: Vòng dú li»u ch÷a khði t¤o
.rodata: Vòng dú li»u ch¿ åc
.rel .text: B£ng t¡i ành và cho vòng m¢ ch÷ìng tr¼nh
.rel .rodata: B£ng t¡i ành và cho vòng dú li»u ch¿ åc
.rel .data: B£ng t¡i ành và cho vòng dú li»u
.symtab: B£ng kþ hi»u
.dynsym: B£ng kþ hi»u cho li¶n k¸t ëng
.strtab: B£ng t¶n
.dynstr: B£ng t¶n cho c¡c kþ hi»u li¶n k¸t ëng

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 30 / 35
Section header

int sh_name; // T¶n (ch¿ sè ¸n b£ng t¶n)


int sh_type; // Lo¤i vòng
int sh_flags; // Cí
int sh_addr; // àa ch¿ cì sð cõa vòng (n¸u n¤p ÷ñc), ho°c 0
int sh_offset; // Và tr½ b­t ¦u cõa vòng tr¶n t»p
int sh_size; // K½ch th÷îc vòng
int sh_link; // Sè thù tü vòng li¶n quan, ho°c 0
int sh_info; // Thæng tin th¶m cho tøng lo¤i vòng
int sh_align; // Gi¡ trà c«n ch¿nh khi di chuyºn vòng
int sh_entsize; // K½ch th÷îc möc n¸u vòng l  mët m£ng

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 31 / 35
Ph¥n o¤n trong t»p èi t÷ñng ELF

Ch÷ìng tr¼nh v  dú li»u ÷ñc ph¥n th nh nhi·u o¤n(segment),


thuªn ti»n cho vi»c thüc thi
o¤n cho ch÷ìng tr¼nh: VD. .text, .init, .fini
o¤n cho dú li»u åc ghi .data
o¤n cho dú li»u ch¿ åc .rodata

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 32 / 35
Program header

int type; // Kiºu cõa o¤n ch÷ìng tr¼nh (code, data,...)


int offset; // àa ch¿ ofset cõa o¤n ch÷ìng tr¼nh tr¶n t»p
int virtaddr; // àa ch¿ £o º ¡nh x¤ o¤n
int physaddr; // àa ch¿ vªt lþ (khæng sû döng)
int filesize; // K½ch th÷îc o¤n tr¶n t»p
int memsize; // K½ch th÷îc o¤n tr¶n bë nhî
int flags; // C¡c bit cí (Read, Write, Execute)
int align; // Thæng tin c«n ch¿nh o¤n (k½ch th÷îc mët trang)

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 33 / 35
B£ng kþ hi»u trong t»p èi t÷ñng ELF

Gièng nh÷ b£ng kþ hi»u trong ph¦n text


name: Con trä tîi x¥u kþ tü chùa t¶n n¬m trong b£ng chuéi kþ tü
value: àa ch¿ cõa kþ hi»u (tr¶n vòng ch÷ìng tr¼nh, ho°c dú li»u)
size: K½ch th÷îc bë nhî cho kþ hi»u
type: lo¤i kþ hi»u (data, function, section)
bind: Ph¤m vi (to n cöc/cöc bë)
sect: Sè thù tü vòng ho°c cí ch¿ thà èi t÷ñng ch÷a ành ngh¾a

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 34 / 35
B£ng kþ hi»u

int name; // T¶n (ch¿ sè tr¶n b£ng t¶n)


int value; // Gi¡ trà (t÷ìng èi n¸u l  t»p relocation
tuy»t èi n¸u l  t»p ³ecutable)
int size; // K½ch th÷îc cõa èi t÷ñng ho°c h m
char type:4; // Kiºu (èi t÷ñng, h m, vòng, hay kþ hi»u °c bi»t)
char bind:4; // Ph¤m vi (cöc bë, to n cöc, y¸u)
char other; // Dü trú
short sect; // Sè thù tü o¤n, ABS, COMMON, ho°c UNDEF

Nguy¹n Húu ùc (Vi»n CNTT & TT) T»p èi t÷ñng 35 / 35

You might also like