eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaCP/M i 64kBRe: CP/M i 64kB
  • Data: 2019-03-03 17:44:34
    Temat: Re: CP/M i 64kB
    Od: "J.F." <j...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Dnia Sat, 2 Mar 2019 10:20:44 +0100, Sebastian Biały napisał(a):
    > On 02/03/2019 01:10, J.F. wrote:
    >>> Ultimate 1MB w Atari jest używane głównie przez demoscene, ale takie np.
    >>> Atari 130XE miało własnie przepinany dodatkowy RAM i było to niejako
    >>> wbudowane w hardware. Taka segmentacja, prawie jak w 8086 :D
    >> No nie, nie przesadzaj z porownaniami.
    >
    > 8086 - Procesor mający 64kB linioej przestrzeni widący resztę pamięci
    > przez okna przemieszczane rejestrami segmentowymi
    >
    > 6502 - Procesor mający 64kB liniwej przestrzeni widzący resztę pamieci
    > przez okna przemieszczane rejestrami sprzętowymi
    >
    > Coś pomyliłem?

    O tak, 6502 - procesor majacy 256B przestrzeni liniowej,
    przemieszczane gdzies w 64KB przestrzenii adresowej.

    Poza tym masz np obrazek duzy.
    Ustawiac segment na pocztek n-tej linii masz w ramach 64KB dostep do
    tej linii (przy sensownym rozmiarze), moze nawet do kilku nastepnych.

    W stronnicowanym Atari musisz co chwila sprawdzac.

    > Tak, detalicznie rzecz biorąc 8086 miał kilka okien
    > jednocześnie i możlwiość liczenia na parach rejestrów. Znaczy lepszy.

    Byl 16-bit, a nie bit. Znacznie lepszy :-)

    >> no i troche pretensji do Intela za 286 - to juz nie byl czas, zeby tak
    >> komplikowac.
    >
    > 386 to też nie był ten czas. 486 tym bardziej. Pentim to już 3x
    > przegięcie. A mimo to rewolucja przyszła dopiero z AMD kiedy po raz
    > pierwszy Intel posikał się w pieluchę i musiał dorabiać na kolanie AMD64.
    >
    > Ta firma jest niereformowalna.

    O, bez przesady. W koncu jednak to oni wymyslili mikroprocesor.

    386 byl w miare dobry, i jak widac nie trzeba go bylo zmieniac ...
    dlugo.


    >>> Nie ponieważ powoduje to powstawanie dziur na końcach obszarów i nic nie
    >>> daje bo procesory od wieków potrafią indeksować od dowolnego adresu. No,
    >>> oczywiście poza 8086 który niewiele potrafi w temacie liniowego dostępu.
    >> Ale ty patrzysz przez 86, a tu trzeba przez model 286, a nawet 386.
    >
    > Patrze przez 80806 bo od tego się zaczeło pieprzenie o "profesjonaliźmie".

    Zdaje sie, ze tezy nie bylo, tylko pytanie "Dlaczego CP/M byl uwazany
    za "profesjonalny"".
    I ewentualnie drugie: Dlaczego gdzies w okolicach lat 1985-1190
    w Polsce to IBM/klon PC byl uwazany za "profesjonalny".

    >>> Innymi słowy segmentacja nie ma żadnej zalety. Ma za to absurdalny
    >>> overheat w kodzie i absurdalny wpływ na języki programowania takie jak
    >>> farptr i inne debilizmy wypływające w kodzie źrodłowym.
    >> Kiedy wlasnie IMHO u intela jest to prosto zrobione, a inne procki ...
    >> roznie bywa.
    >
    > Inne procki albo nie udawały że potrafią więcej albo od razu były
    > normalne. Intel zrobił pokrakę mającą za zadanie podstawowe utrzymać
    > model programistyczny z 8 bitów. Żadnej innowacji, żadnego wizonerstwa,
    > tylko utrzymanie kompatybilności z Zx Sp^M^M^M^M8086.

    Nie z ZX Spectrum tylko z CP/M na 8080.
    Mowisz pokraka ... a ja mowie "tworcze rozwiniecie".
    I wez pod uwage, ze to byly lata 1976-78.

    A przy okazji - widac ktos docenil rozwoj srodowiska CP/M, skoro
    zachowal kombatybilnosc, co uzasadnia przymiotnik "profesjonalny" :-)

    >>> Segmentacja tego problemu nie rozwiąże, to jest fragmentacja typowa dla
    >>> nawet współczesnych procesorów tylko mniej bolesna z powodu warstwy
    >>> abstrakcji na pamięć.
    >> Ale te segmenty mozesz przesuwac (nie w 86).
    >
    > Z punktu widzenia modelu programistycznego pamieci "nie da się
    > przesuwać" bez wiedzy kodu bo na na stałe zapamiętane pointery. A Ty,
    > jak rozmiem, narzekasz że jak się ustawi gdzies stos to już tam musi
    > zostać. No więc musi bez względu na to czy segmenty są czy nie. Jak by
    > nie miał zostać lub być dynamicznie przemieszczany to bez wiedzy
    > programu nie da się tego zrobić. Segmenty niczego tu nie naprawiają.

    A widzisz - nie.
    Ale musisz z 86 przeskoczyc do 286, trybu protected, rzadko uzywanego.
    Tam "segment" to nie byl skladnik adresu mnozony przez 16, tylko numer
    segmentu. A do tego byla tablica segmentow, gdzie sie wpisywalo gdzie
    w pamieci rezyduje segment.

    System mogl przeniesc zawartosc pamieci, zmienic dane w tablicy i
    wznowic prace programu.

    > Segmentacja pamięci *NIE* ma żadnego praktycznego zastosowania które
    > jest lepsze od pamieci liniowo dostępnej.

    Wyobraz sobie tak - alokujesz 1 GB pamieci.
    System przydziela od adresu 0.2G, bo nizej juz zajete.
    Potem alokujemy drugi obszar, 100MB, wypada od adresu 1.2G.
    Teraz chcemy rozszerzyc ten pierwszy do 1.3G
    I tu juz system mowi, ze tak sie nie da - nie ma rozszerzania, bo nie.
    Moze przydzielic nowy obszar - ale to nie calkiem to samo.
    A z segmentami by sie dalo.

    No to przydzielmy nowy - od adresu 1.3 do 2.6G.

    Rozszerzmy go jeszcze raz do 1.5G ... i system mowi, ze sie nie da,
    bo mu przekroczy 4G (na 32 bit procku).
    4GB pamieci, a nie mozna 1.5GB zaalokowac :-)

    Z segmentami (ale nie takimi jak w 86) by sie dalo.

    Oczywiscie idealne to nie jest - trzeba dodatkowo ten nr segmemtu
    zapamietywac, zazwyczaj jest ich ograniczona ilosc - wiec wychodzac z
    jednej pulapki pakujemu sie w druga :-)
    Rozwiazaniem moze byc przejscie na system 64-bit ... na jak dlugo
    starczy ? :-)


    >>> Jak mówie każdy procesor potrafi adresować
    >>> względnie, względem byleczego i liniowo. Poza 8086. 8086 jak zwykle
    >>> dzielnie rozwiązywał problemy niespotykane nigdzie indziej.
    >> No to juz 286 mial ladnie zrobiona wzgledna adresacje ... tylko
    >> niestey 16-bitowa, no i bez wirtualnej pamieci.
    >
    > Jak się nie obrócisz dupa z tyłu. To motto Intela i ich profesjonalnych
    > produktów.

    Powiem tak: jakos im to dzialalo i to bez wiekszych narzekan ze strony
    programistow. Widac tak sie profesjonalnie rozwiazuje problemy :-)

    >>> A czemu nie pozwala? Przypomne że 8086 to taki g... że aby napisać
    >>> program z fetchem względnym trzeba robić wygibasy rodem z hackingu aby
    >>> odczytać PC.
    >> Ale po co chcesz odczytywac PC ? Dajesz przedrostek CS:
    >> No i raczej pisze o nastepcach niz o 8086.
    >
    > Ale rozmawiamy o 8086 bo to jest powód dla którego MS/Paterson
    > podpierniczyli CP/M.
    > PC był niedostepny z kodu i dalej jest niedostępny, dopiero AMD64 coś
    > tutaj zrobiło.

    Nie pamietam ... ale nie pamietam tez jak sie czytalo, to mozesz miec
    racje.
    Ale ... nie wystarczy udostepnic PC, bo co bedzie, jak miedzy
    obliczeniem adresu a uzyciem danych przyjdzie przerwanie, a w nim
    system zechce przesunac obszary ?

    >> A 68k pozwalala na w pelni relokowalny kod, czy tez trzeba bylo
    >> wygibasy robic ?
    >
    > W pełni relokowalny bez problemu.
    > http://www.scarpaz.com/Attic/Didattica/Scarpazza-200
    5-68k-1-addressing.pdf

    Ok, widze te tryby z uzyciem PC, ale widze tez cos o pamietaniu
    problemow ... i wietrze problemy :-)

    >> Za to w innych ich troche brakowalo, i trzeba bylo sztucznie
    >> wprowadzac.
    > A gdzie.

    Cos mi tak chodzi po glowie, ze wlasnie w MC68k w unixach uzywano
    starszych bitow adresu, jako swego rodzaju identyfikacje segmentu.

    Albo cos takiego - jest funkcja, ktora wymaga tablicy
    danych/parametrow.
    I mozna ja wywolac z tablicą uzytkownika, lub jedną z predefiniowanych
    w bibliotece.

    Tylko funkcja nie wie, ktora jej przekazujesz, skoro to jest po prostu
    adres. Nie wie, czy ma sie odwolywac relatywnie do PC, czy nie.
    Wiec te predefiniowane tablice trzeba jakos inaczej zapamietac - kod
    programu funkcji jest relokowalny, a dane stałe nie..

    No wlasnie - jak sobie z tym wspolczesne systemy radza ?
    Mam np bilbioteke, funkcja w bibliotece ma troche stalych danych.
    Biblioteka ladowana dynamicznie, w dodatku np wspoldzielona, i wzorem
    linuxa - w kazdym procesie dostepna pod innym adresem.

    J.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: