Citat:
random:
Ne radi lakšeg adresiranja (jer realno segment:offset arhitektura nije baš po asm programera nasrećnije rešenje), nego je to bio jedini način da adresiraš memoriju

.
da u pravu si, hvala na ispravci, ja sam lose slozio recenicu
segment:offset model se koristio da bi se preko 20bitne magistrale preneo podatak o mestu u memoriji pomocu 2 16-bitna registra jer su tada procesori bili 16-tobitni tj njihovi registri
anyway gandalf nemoras to da ucis previse duboko, samo malo procackaj po povrsini jer je ta stvar odavno prevazidjena i sada se uglavnom koriste flat memorijski modeli
gandalf: ovo .TEXT nema veze sa onim .CODE
naime ja koristim masm ali mislim da u svakom asembleru (tasm,nasm,fasm...) .code direktiva oznacava mesto pocetka koda
e sad ono .TEXT sto mi spominjemo je kako ce u izvrsnoj datoteci biti obelezen pocetak koda.. otvori u hex editoru neki PE exe fajl (win32 exe) i verovatno ces naici na .TEXT string
to je samo tako usvojeno, ti mozes pri linkovanju da nazoves
segment (tacnije sekciju kada se radi o win32 exe) kako hoces da ti bude prikazan u izvrsnom fajlu
.TEXT je usvojen naziv za code segment koji koristi MS tj njegovi linkeri dok borlandovi linkeri koriste CODE
ako otvoris neki win32 exe i u njemu nadjes string .TEXT to je onda linkovano sa MS linkerom a ako nadjes CODE onda sa borlandovim a ako nadjes .MIKKY onda sam to verovatno ja nesto exprimentisao ali to neces naci
DATA? je segment za ne inicijalizovane podatke, njega stavljas kada te podatke treba da popunis u runtime tj kada se program izvrsava, pa s toga ti podaci nema potrebe da zauzimaju prostor u izvrsnoj datoteci i nepotrebno je povecavaju
.CONST nije segment vec samo deo u sorsu kojim ti kompajleru (tj asembleru) govoris da ono sto sledi su konstante, njih ce kompajler samo zameniti tamo gde se oni nalaze u kodu
dakle .const takodje ne zauzima prostor u izvrsnom fajlu
to je isto sto i #define u C
samo napomena ovo sto ja ovde govorim vazi za win32 jer nisam radio sa unix, a to sto govorim segmenti to nema veze sa memorijom jer kod flat memory modela nepostoje segmenti (tj postoji jedan od 4gb u kome je smesteno sve zivo i data i stack i kod) vec se segment odnosi na delove u sorsu, to je zaostavstina opet iz dosa... jer u vreme dosa kada stavis
.data direktivu to ce zaista ici u data segment
a kod windowsa to ide sve u jedan segment ali razlicite sekcije u PE fajlu, no to je vec druga tema
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.