Keresés
Hírlevél
 
Kiemelt témák
»Hogyan védjem meg a portálomat?
»Google wave
»Assembly :: röviden
Állás/munka
»IPhone App elkészítése
»PHP Fejlesztőt keresünk Miskolcon!
»Profi sitebuildert keresünk projekt alapon
»PHP állás azonnali belépéssel Budaörsön
»PHP programozó munkát vállal
» több téma
Tudástár
?Php oldal sebessége.
Több adat kiírása.
?Flash-XML kommunikáció
?Eseménykezelés, form és usercontroll kapcsolat
?Javascript űrlapok
?Adatok táblába írás után kód van ékezet helyett
?C# progira skin
PHP-ban az if nem fut le
?Datagrid frissítése vb .net
?C# Linq"Sql Insert Sequence
?Visual basic - goto
Mi az a __nonnull() ???
?Bibrálás Nokia 3720-ban J2ME-vel
*Child class visible vagy sem?
*JAVA event a JPANEL-hez
» több téma
Társalgó
»Clipper kontra XP
»Melyik főiskola vagy egyetem?
»Programozás Nokia 3720c-2-re
»HTML szerkesztő
»Weblap véleményezés
»"Márió" jellegű játék írása pascal nyelven
»Windows Mobile programozás egyszerű programmal
»Html oldal küldése outlookkal
»Lelkesítő topic
»Javascript forrás visszaalakítása
» több téma
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Társalgó

»

Hardver és beágyazott rendszerek

»

80x86 memóriakezelés

»

80x86 memóriakezelés

nyitotta: Stakypot, idő: 2010.01.06., moderátor: moderator
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben Nyomtatható verzió
Sorrend:
Időzóna:
Blokkméret:
Sziasztok

A 80x86 CPU-k memóriakezelésével kapcsolatban szeretnék egy kis felvilágosítást kérni. Utánaolvastam a dolognak, mert eddig nem teljesen volt világos a számomra.
-A 80x88 processzorok szegmens:offszet címzést használnak, minden szegmens 64kbyte.
Ezt úgy értelmeztem, hogy az egész memória -pl legyen a gépben 32Mb- mondjuk egy csomag A4-es lap, és minden egyes lap egy 64kbyt-nyi területet jelent.
-Minden 16 kbyt-nél egy új szegmens kezdődik. Na itt már egy kicsit ..
És volt még az EMS: egy 64KB-s 'ablakban' 4 darab 16KB-s darabban lehetett az 1MB feletti memóriát elérni valós módban, először csak hardver segítségével, azután 386-tól pusztán szoftverrel is
80x88-ból mindössze egyetlen féle létezett, a 80188-as, de az sohasem terjedt el a piacon. A 80186-os sem.

Ami pedig a 80x86-ot illeti, nem kellene azokat mind egy kalap alá venni.

A 80286 még 16 bites processzor volt, max 16 mega memóriát tudott címezni, és 64k szegmens határ volt (protected módban is). A 80386-os pedig már 32 bites volt, és 4 giga fizikai memória határra tervezték, amit egyetlen szegmenssel is át tudott fogni.
előzmény
Találtam is ezzel kapcsolatban egy érdekes történetet. előzmény
De sőt, majdnem 64KB-t használhatunk az 1MB felett is, ha a hardverünk is engedi, ez a HMA, FFFF:0010 - FFFF:FFFF (= 100000 - 10FFEF). (Ha a hardverünk nem engedi, akkor persze a memória legelejét látjuk viszont ezeken a címeken,) előzmény
A szegmentált címzést annak idején azért találták ki, mert a 8088-as processzornak 16 bites regiszterei voltak és 20 címvonala. Hagyományos címzéssel csak 16 bites címeket tudott volna tárolni a regisztereiben, amely 64K memória elérését tette volna lehetővé.

Ennek a problémának a megoldására találták ki, hogy a fizikai címeket 16 bites szegmens és 16 bites offszet logikai címekkel határozzák meg, melyeket már el lehet tárolni a processzor regisztereiben.

Az elképzelésed jó, valóban átlapolják egymást a szegmensek, tehát egy fizikai címet többféleképpen is felírhatunk logikai címekkel.

Egy példa:

Legyen egy logikai cím A000:0000.

Ebből úgy kapunk fizikai címet, hogy a szegmens címet balra léptetjük 4 bittel (16-tal szorozzuk), majd hozzáadjuk az ofszet címet:

    A000 << 4 = A0000 és A0000 + 0000 = A0000.

Most nézzük meg az A000:FFFF logikai címet:

    A000 << 4 = A0000 és A0000 + FFFF = AFFFF.

A két fizikai cím különbsége: AFFFF - A0000 = FFFF.

Tehát egy szegmens valóban FFFF bájt, azaz 64K.

Most vizsgáljuk meg az A001:0000 logikai címet:

    A001 << 4 = A0010 és A0010 + 0000 = A0010.

Mivel A0010 - A0000 = 10, vagyis 16 bájt, így a szegmensek valóban 16 bájtonként lapolódnak át (vigyázat: nem 16K, hanem 16 bájt).

Végül arra kell még figyelni, hogy ezzel a címzési móddal a maximálisan megcímezhető memória:

    FFFF:000F, vagyis FFFF0 + 000F = FFFFF, vagyis 1M.

Itt találhatsz még bővebb információt a 8088-as processzorról.
előzmény
Túlbonyolítod, pedig már magától is túl bonyolult. Húszbites címet állítanak elő kétszer tizenhat bitből, mégpedig úgy, hogy az első rész (szegmens) tizenhattal szorozzák, és ahhoz hozzáadják a másodikat (offszet). előzmény
Forditva. 8086 modban egy 20 bites cimbusz van, es 16-val maradek nelkul oszthato cimeken kezdodnek a szegmensek. Magyarul a segment:offset cim az segment*16 + offset modon szamolodik "fizikai" cimme. Nincs olyan, hogy "fizikai szegmens", ez csak memoriacimzesi eljaras.

Tom előzmény
Sziasztok

A 80x86 CPU-k memóriakezelésével kapcsolatban szeretnék egy kis felvilágosítást kérni. Utánaolvastam a dolognak, mert eddig nem teljesen volt világos a számomra.
-A 80x88 processzorok szegmens:offszet címzést használnak, minden szegmens 64kbyte.
Ezt úgy értelmeztem, hogy az egész memória -pl legyen a gépben 32Mb- mondjuk egy csomag A4-es lap, és minden egyes lap egy 64kbyt-nyi területet jelent.
-Minden 16 kbyt-nél egy új szegmens kezdődik. Na itt már egy kicsit kavar van. Ha jól értem itt arról lenne szó, hogy a legelső A4-es lapra úgy teszük rá a következőt, hogy a tetejénél maradjon ki mondjuk 10 cm??? Így a második lap, az elsőnek majdnem a 75%át lapolná át? Viosszatérve a 80x88 hoz. Tehát egy szegmensnyi területet 4 szegmens lapol át? Az első szeg 16k nál, a második 32k-nál, a harmadik 48k nál, a negydik pedig 64k nál, azaz a 0. szegmens végénél kezdődik... Ez így rendben van-e, vagy valamit félreértelmeztem?
Még az nem világos, hogy ha fizikai címet akarunk számolni, akkor minek kell szorozni 16-al a szegmenst, meg osztani az offszettel, jobbra léptetni, meg 0 kal feltölteni???


Előre is köszönöm a válaszokat
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
Top pontgyűjtők
»Micu1.770
»Árnyék810
»vinie530
»Frostech0440
»Riha400
»pelz350
»djjjozsi310
»stl290
»klorand250
»NevemTeve230
Hírek
»Letölthető a Mozilla Jetpack SDK első kiadása
»Saját alkalmazásboltot nyitott a Google
»Súlyos sebezhetőség minden Apache kiszolgálóban
»Natív 3D-s támogatás a legújabb Android fejlesztőkészletben
»A Windows titkos eredete
» több hír
PC Fórum hírek
»Nem boldogul az legújabb merevlemezekkel az XP és a Linux
»Átírják a Firefox licencszerződését
»Több tízezer nebuló a Microsuliban
»Sebezhető az Internet Explorer és az Opera is
»Még márciusban megjelenik az Intel nyolcmagos szerverlapkája
»Hamis Core i7 processzorokat árultak a neten
»Korábban jön a Windows 7 Service Pack 1
»Április elejétől lesz kapható az iPad
Tagi blogok
»USB
»PHP, mint sablonmotor egyszerűen
»Én és linux
»Coming out