-
Data: 2019-03-05 11:21:48
Temat: Re: CP/M i 64kB
Od: "J.F." <j...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Użytkownik "Sebastian Biały" napisał w wiadomości grup
dyskusyjnych:q5jrg8$8sq$...@n...news.atman.pl...
On 03/03/2019 22:34, J.F. wrote:
>> A jak mamy 1MB RAM, to znow znacznie latwiej sie to obrabia na 8086
>> w
>> malych kawalkach, niz na 6502 z dodatkowym stronnicowaniem.
>I tu i tu musisz przestawiać segmenty. W przypadku 8086 masz tylko tą
>zaletę że robisz to w cpu.
Mam te zalete, ze ten segment jest przesuwny i obejmuje prawie 64KB.
>> O co innego chodzi. Masz np obrazek 24b/pixel.
>> Obliczasz adres trzech bajtow pixela w pamieci seg:offset,
>> i masz w trzech kolejnych bajtach dane. I nie zastanawiasz sie czy
>> przypadkiem drugi lub trzeci bajt nie leza na innej stronie, i
>> trzeba
>> ja zmienic.
>Zależy jaki duży masz ten obrazek. A jak nie wiesz jaki masz duży to
>i tak musisz sprawdzać za każdym razem. Znowu dupa z tyłu.
Nie sprawdzam - wyliczam adres pixela, jego trzy bajty sie w segmencie
zmieszcza.
Przy stronnicowaniu nie moge tego obiecac - musze sprawdzac przy
kazdym bajcie.
Moze nawet wystarczy adres dla poczatku linii policzyc, ale to juz
lepiej sprawdzic ... albo i nie, kto ma takie glupie obrazki, ten moze
miec klopoty :-)
Nawiasem mowiac - gdzies w TIFF jest "chunk size", ktos przewidzial,
ze moze byc dobrze podzielic obrazek na kawalki nie wieksze niz np
8KB.
I to nie tylko w 8086 sie sprawdza - np te "memory mapped" pliki w
unixie.
>> Albo np szukasz slowa w tekscie, i sie nie zastanawiasz czy
>> przypadkiem "owo" nie jest na nastepnej stronie.
>Bo teksty z definicji nie przekraczają 64kB ...
W CP/M byc moze, ale my tu o lepszym systemie :-)
>>> A jak? Żeby program nie wiedział i żebyś nie pomylił segmentacji z
>>> translacją wirtualna->fizyczna MMU.
>> Bo program ma uzywac dla tej pamieci segmentu nr 3 np.
>Para segment:offest to jest dokłądnie to samo co pointer.
>dokładnością do kłopotów w relacjach. Nie ma tam nic "leszego" albo
>rozwiązującego problemy lepiej niż liniowy adres. Nic. Dorabianie
>filozofii do tego konceptu jest naprawdę bolesne dla logiki.
https://en.wikipedia.org/wiki/Memory_segmentation
I nie zaczyna sie od "8086 ..."
>>> Bo to problem segmentacji pamięci i jest obecy w każdej
>>> współczesnej
>>> sytuacji kiedy nie ma kompaktacji pamięci. Segmenty nic nie
>>> zmieniają
>>> ani nie ułatwiają.
>>>> Z segmentami (ale nie takimi jak w 86) by sie dalo.
>Nie dało. Program musi wiedzieć że mu pamięc kompaktujesz i wskaźnik
>jest iwalidowany.
Nie musi wiedziec, bo wskaznik sie nie zmienia.
3:1500 pozostaje, i tylko system wie, ze segment 3 jest teraz
polozony gdzie indziej.
>> Nawiasem mowiac - chcieli lepiej
>> https://en.wikipedia.org/wiki/Intel_iAPX_432
>Nie było zgodne z CP/M i w dodatku potem okazało się że było na tyle
>kiepsko zaprojektowane że nie było też wydajne.
Ale przede wszystkim rynek nie chcial.
To co beda ulepszac :-)
Nawiasem mowiac - mimo niewatpliwych zalet, zobacz jak dlugo sie 68k
przebijala.
Za droga byla, czy zabraklo takiej lokomotywy jak IBM ... i CP/M?
Tego CP/M to bym nie przecenial, bo niedawno wystartowal, a pisanie np
kompilatora w assemblerze ... musialo byc ciekawe :-)
A moze jednak tak ogolnie 68k kiepska byla ?
Albo unix byl za malo "user friendly" i za drogi ?
>>> żąłosną architekturą było nawet to 386 z kilkoma specjalizowanymi
>>> rejestrami, praktycznie zerową ortogonalnością itd itp.
>> Ta ortogonalnosc nie jest tak znow niezbedna.
>Powiedz to kompilatorom. Obecnie tworzy się kod na procesor wirtualny
>z masą rejestrów a nastepnie kolejna warstwa stara się to translować
>na żałosną przestrzeń rejestrów x86. No, ale Turing-complete, więc o
>co chodzi.
No i mowisz kompilatorom, one kompiluja, rezultat jest dobry i co cie
to wiecej obchodzi ?
A i tak nie wiadomo, czy tak trzeba, czy tworcy kompilatorow poszli w
takim kierunku, aby RISC obsluzyc.
Borland kompilowal bezposrednio na x86.
>>> Nie musi tego wiedzieć, skoro podałeś adres to pod nim spodziewadz
>>> się
>>> danych. Mówisz o offsecie. Ale nawet wtedy nie o to chodzi. Kod
>>> relokowalny ma TAKIE SAME pointery jak nierelokowalny. Róznica
>>> jest
>>> tylko w tym że KOD może być dowolnie umieszczony w RAM.
>> A tu jest kod i dane.
>> Np procedura rysowania znakow na ekranie, i dane z fontami.
>> Font moze byc dowolny, ale jest kilka predefiniowanych w
>> bibliotece.
>Ich dane są gdzieś załadowane fizycznie w pamięć.
Sa w bibliotece, razem z kodem procedury.
I teraz trzeba podzielic biblioteke na dwie czesci, zaladowac osobno
do pamieci,
zrelokowac wskazniki w kodzie programu ... albo uzywac w programie
adresowania wzgledem PC i po zaladowaniu absolutnie nie przesuwac.
J.
Następne wpisy z tego wątku
- 05.03.19 20:48 Sebastian Biały
- 05.03.19 21:58 J.F.
- 19.03.19 21:00 ń
Najnowsze wątki z tej grupy
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
Najnowsze wątki
- 2025-01-20 Gdańsk => Programista Full Stack .Net <=
- 2025-01-20 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-20 Warszawa => Full Stack .Net Engineer <=
- 2025-01-20 huta ruszyla
- 2025-01-20 piece wodorowe
- 2025-01-20 Lublin => Programista Delphi <=
- 2025-01-20 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-20 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-20 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-01-19 Test - nie czytać
- 2025-01-19 qqqq
- 2025-01-19 Tauron przysyła aneks
- 2025-01-19 Nowa ładowarka Moya a Twizy -)
- 2025-01-18 Power BANK z ładowaniem przelotowym robi PRZERWY
- 2025-01-18 Pomoc dla Filipa ;)