Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

segmenti

[es] :: Asembler :: segmenti

[ Pregleda: 5446 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gandalf
Goran Raovic
senior network engineer
Belgrade

Član broj: 52
Poruke: 248
195.252.103.*

Jabber: goran.raovic@gmail.com


+44 Profil

icon segmenti13.10.2002. u 16:18 - pre 260 meseci
Imam za vas dva pitanja:

1. Sta je to segment (npr data);

- mesto gde se nalaze podatci u memoriji ili
- mesto u memoriji gde se nalaze adrese do podataka

2. Sta rade ove dve instrukcije

mov ax,@data
mov ds,ax


 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.beotel.net

ICQ: 44582291


+58 Profil

icon Re: segmenti13.10.2002. u 22:07 - pre 260 meseci
1. mesto gde se nalazi podatak, to je zaostavstina iz ranih dana x86 procesora kada se radi lakseg adresiranja memorije morao primeniti segment:offset metod
npr imas data segment - segment memorije u kome stoje podatci
code segment - za kod itd
u danasnje vreme 32bitnih procesora i operativnih sistema vise se ne koriste segmenti za pristup delovima memorije vec samo offset


2. @data je verovatno neki label koji pokazuje na pocetak podataka u memoriji, posto instrukcija mov ds,@data nije podrzana tj nepostoji tj nije dozvoljeno direktno stavljanje literal vrednosti u ds registar onda se to ovde uradilo pomocu ax registra jer je dozvoljeno mov ds,<reg>
gde je reg neki od general purpose registara
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

gandalf
Goran Raovic
senior network engineer
Belgrade

Član broj: 52
Poruke: 248
195.252.103.*

Jabber: goran.raovic@gmail.com


+44 Profil

icon Re: segmenti13.10.2002. u 22:23 - pre 260 meseci
Hvala na odgovoru :o))
 
Odgovor na temu

random
Vladimir Vrzić
Beograd

Član broj: 85
Poruke: 3866
*.f.bg.ac.yu

Sajt: www.last.fm/user/vrza


+4 Profil

icon Re: segmenti14.10.2002. u 03:07 - pre 260 meseci
Dopunio bih malo ovo pod 1.

Pojam segmenta nije vezan samo za real-mode x86 arhitekturu. Segmenti se koriste se kod svakog sistema sa segmentnom organizacijom memorije. Segment je zapravo deo memorije varijabilne dužine (za razliku od stranice (page) koja je deo memorije fiksne dužine) u kome se nalaze neki podaci koji logički pripadaju zajedno. Kod nekih sistema segment je osnovna jedinica kojom manipuliše VM podsistem — swapping se radi na nivou segmenta, a takođe i kontrola pristupa memoriji (dozvole za čitanje, pisanje, izvršavanje instrukcija).

U praktičnom životu, na višeprocesnim operativnim sistemima (UNIX mi je blizak pa o njemu govorim, a i na Windowsu je verujem slično), svaki proces u memoriji se sastoji od barem 3 segmenta, naime, TEXT, DATA, i STACK segmenta. U TEXT segmentu se nalazi programski kôd, tj. instrukcije, u DATA segmentu statički (unapred poznati) podaci koje proces koristi, i STACK segment se koristi za stack (naravno), a bogami i za smeštanje lokalnih promenljivih.
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
 
Odgovor na temu

random
Vladimir Vrzić
Beograd

Član broj: 85
Poruke: 3866
*.f.bg.ac.yu

Sajt: www.last.fm/user/vrza


+4 Profil

icon Re: segmenti14.10.2002. u 03:13 - pre 260 meseci
Citat:
Mikky:
1. mesto gde se nalazi podatak, to je zaostavstina iz ranih dana x86 procesora kada se radi lakseg adresiranja memorije morao primeniti segment:offset metod...


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 :o).
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
 
Odgovor na temu

gandalf
Goran Raovic
senior network engineer
Belgrade

Član broj: 52
Poruke: 248
195.252.103.*

Jabber: goran.raovic@gmail.com


+44 Profil

icon Re: segmenti14.10.2002. u 13:49 - pre 260 meseci
Citat:
random:
svaki proces u memoriji se sastoji od barem 3 segmenta, naime, TEXT, DATA, i STACK segmenta. U TEXT segmentu se nalazi programski kôd, tj. instrukcije, u DATA segmentu statički (unapred poznati) podaci koje proces koristi, i STACK segment se koristi za stack (naravno), a bogami i za smeštanje lokalnih promenljivih.



Zar nije CODE DATA i STACK segment
CODE za kod programa
DATA za podatke (i ne moraju da budu unapred definisane )
i STACK za stack programa.

Za data segment:

ako su podatci unapred poznati onda za inicijalizaciju podataka se pise .DATA
npr
.data
a db 1
ako podatci nisu poznati onda je direktiva .DATA?

npr.

.data?
a db ?

i na kraju ako su podatci konstantni:
.CONST

npr.
.const
a db 1

 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16681
*.telemaxx.net



+7166 Profil

icon Re: segmenti14.10.2002. u 14:14 - pre 260 meseci
.text je kodni segment u 32-bitnoj x86 arhitekturi

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.beotel.net

ICQ: 44582291


+58 Profil

icon Re: segmenti14.10.2002. u 22:37 - pre 260 meseci
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.
 
Odgovor na temu

gandalf
Goran Raovic
senior network engineer
Belgrade

Član broj: 52
Poruke: 248
195.252.103.*

Jabber: goran.raovic@gmail.com


+44 Profil

icon Re: segmenti15.10.2002. u 09:45 - pre 260 meseci
o.k hvala na odgovorima :o)
 
Odgovor na temu

[es] :: Asembler :: segmenti

[ Pregleda: 5446 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.