Nowy polski procesor

Mar 04, 2013 254 Replies

On 2013-03-05 09:53, Waldemar Krzok wrote: [...]

W sam raz w przypadku H8 jest chyba *bardzo* duża - tam również każda instrukcja może działać na dowolnym rejestrze/rejestrach (oprócz kilku nielicznych instrukcji odwołujących się do CCR).

W H8 jest jedna instrukcja MOV (w wersjach .B, .W i .L) która w połączeniu z trybem adresowania natychmiastowego daje to co LoaDImmediate. Może w PDP-11 było podobnie?

Standardowy tryb adresowania w H8. Chociaż AFAIR tam nie da się modyfikować zawartości PC instrukcją klasy MOV.

Dnia 05-03-2013 o 09:53:51 Waldemar Krzok snipped-for-privacy@zedat.fu-berlin.de> napisał(a):

<->

Chciałem zauważyć, że w przeciwieństwie do 8080 czy Z80, 6502 nie miał wielu instrukcji działających tylko na konkretnym rejestrze choć rzeczywiście takie były, ale z drugiej strony to ile tych rejestrów 6502 miał? ;) Za to wiele rzeczy można było zrobić wprost na pamięci a strona zerowa pamięci wręcz była traktowana jak dodatkowe rejestry procesora. Co by nie mówić filozofia totalnie odmienna od intelowskiej.

H8 akurat nie znam. 6502 i 6800 trochę.

Właśnie PDP nie miała adresowania natychmiastowego. Dlatego to dziwne mov R0,(R7)+. R7 to Program Counter, a efekt to właśnie LDI.

W PDP mogłeś pomnożyć PC z SP i wartość wpisać do PC (albo SP). Obojętnie, czy to miało sens ;-).

Waldek

Pan Miroslaw Kwasniak napisał:

Może bardziej technologii. Drzewiej liczyć potrafili akuratnie, ale ze zmajstrowaniem takiej profilowanej prowadnicy bywały kłopoty.

Powini też wrócić do polewania wroga smołą i posypywania pierzem. To było bardzo widowiskowe. Właściwie to z powodów humanitarnych gorącą smołę można zastąpić czymś bardziej niskotopliwym. Współczesna chemia organiczna ma tu wiele do zaoferowania.

Am 05.03.2013 11:54, schrieb Jarosław Sokołowski:

Wosk, koniecznie pszczeli, bo to bardziej ekologiczne jest. Parafina to produkt z ropy naftowej, a to jest be.

Waldek

Pan Waldemar Krzok napisał:

Taką kombinację stosował już niejaki Dedal ze swoim synem.

W dniu 05.03.2013 11:21, JDX pisze:

W wielu prockach są sztuczne mnemoniki assemblera. Np. w AVR tak naprawdę nie istnieje rozkaz przesunięcia artmetycznego w lewo LSL, jest to w rzeczywistości dodanie rejestru do samego siebie. czyli LSL r0 to tak naprawdę ADD r0, r0. Rozkazy SBR i CBR to nic innego jak ORI i ANDI.

Pozdrawiam Grzegorz

W domyślnym konfigu 3x tyle za 32 bity. W minimalnym przypadku 80% dla openRISC i +- tyle samo dla µBlaze. (Wg przelicznika 1k LUT ~ 10k gates)

Tylko z materiałów an stronie wychodzi, ze to full-feature µC. Specyfikacja wygląda jak jakiegoś taniego ARMa, tyle, ze z aż 8MB flash/ram, więc target to dość duże systemy.

Używanie w dużym projekcie 8051 naprawdę przypomina mi właśnie miotanie granatów za pomocą trebusza podczas gdy prościej zrobić z tekturowej rury granatnik bezodrzutowy. ;)

To ten w którym trzeba było oznaczać funkcje jako reentrant, bo inaczej zarówno argumenty jak i zmienne pakował jako statyczne?

A to z większością kompilatorów tak jest.

A wolałbyś żeby od razu użył programowej emulacji stosu dla argumentów?

W przypadku gcc czasem ciężko zauważyć.

tak.... to ciekawe dlaczego jak piszê w asm to kod mam 1kB a po przepisaniu na ci skompilowaniu mam 1,7kB i to po wielkich bojach z optymalizacj±.....A programista ASM ze mnie ¿aden. Kompilator ma pare udanych implamantacji ale ogólnie te¿ kulfony robi przy generowaniu kodu.

U¿ytkownik "Wojtek" snipped-for-privacy@laaapppii.plll napisa³ w wiadomo¶ci news:kh72eg$ltj$ snipped-for-privacy@news.task.gda.pl...

W ogóle jest jaka¶ dziwna tendencja chyba we wszystkim, czy prawie wszystkim, ¿e praktycznie identyczne, czy podobne programy, obrastaj± w craz wiêkszy kod wynikowy, nie usprawiedliwiony np. dodawanymi funkcjami. Ró¿ne kompilatory dla dok³adnie takiego samego kodu wej¶ciowego produkuj± ca³kowicie ró¿ny w objêto¶ci kod. We¼my z Pascala np. (darujcie "interpunkcjê", ostatni raz rze¼bi³em 20 lat temu...) program hello; (niektóre kompilatory OIDP pozwalaj± na pominiêcie tej deklaracji) begin writeln ('Dzien dobry'); end. jeden kompilator da³ 30-kilka kB kodu, inny ok. 7, dla ciekawo¶ci powiedzmy, ¿e "przeportowa³em" to na mocno niszowego "Zdzicha" (dostêpny w necie, dla DOS) kompilat by³ poni¿ej 100B (tak, bajtów, nie kilo, czy mega...). A robi³y dok³adnie to samo. Zero do³±czeñ, zero innych deklaracji, itp. a dokleja³y kilkadziesi±t kB ch.j wie czego, psu na budê potrzebnego... Jestem niemal pewien, ¿e gdyby tu i ówdzie poobcinaæ fuzle, to programy zrobi³y by siê mniejsze... tylko mo¿e kompilatory powinny rzetelniej generowaæ kod? Nie doklejaæ czego¶, co programowi nie jest potrzebne. A jak zd±¿y³em siê zorientowaæ, pamiêæ w naszych projektach (ja siê nie zajmujê, nie to zdrowie... Ale mo¿e kiedy¶?) :)) bywa towarem deficytowym...? ... no dobra... nic nie mówi³em...

Przecież dokleileś I/O. Zapewne z cała duperelowatością obsługi różnych typów, printowania floatów itp. Pisz ostrożnie a zobaczysz że nic złego się nie ssa samoczynnie. Kompilatory nie są aż takie złe.

W końcu są "różne".

A to zależy od wielu opcji czasu kompilacji.

Bardziej rozbudowana lub nie stripowana biblioteka.

Mniej rozbudowana (albo np wolniejsza) biblioteka. 30 kB to żaden rozmiar, więc w czym problem?

Stripowana biblioteka, brak nagłówka PE (pliki .exe zawierają w sobie m.i. plik com piszący, że "ten program jest pod windę", brak importowanych bibliotek, etc...

a writeln to skąd się niby wzięło?

A potem jak się trochę więcej napisało to nagle ten pierwszy tył o dodatkowe kilka kB kodu a ten drugi o kilkadziesiąt.

Po grzyba ktoś ma optymalizować kompilator pod kątem minimalnego programu, który nic nie robi?

W tym ze do zapewnienie dzialania zgodnie z wymaganiami wystarczy 1kB. Niektorzy po prostu lubia miec rzeczy "szyte na miare" a nie na wszystkie mozliwe okazje.

j.w.

Generalnie inzynieria programowania jest niewolnikiem ekomomi i pojecia "dobry" "optymalny" program sie zdewaluowaly. Teraz dobry program to ten na ktorym da sie jak najwieciej zarobic w jak najktorszym czasie przy spelnieniu wymagan specyfikacji. A kiedys dobry program to taki ktory zrobi to co jest w specyfikacji w jak najktorszym czasie i zajmnie jak najmniej miejsca. Ni huhu nie pasuje do wspolczenej wszechobecnej komercji gdzie TTM jest najwazniejszym parametrem.

Pozdrawiam

Marek

Marek Borowski snipped-for-privacy@a.borowski.com> napisa³(a):

Na miarê czego? Komputera z 4 GB RAMu? Co za ró¿nica ile zajmie hello world? Mo¿e powiesz, ¿e s± mikrokontrolery z 1 kB RAMu albo mniej. Tak, dlatego pytam co to za miara. Ale teraz tych kostek jest mnóstwo, s± tanie i nie ma sensu walczyæ o ka¿dy bajt. Poczytaj sobie

formatting link

A ten najkrótszy czas i najmniejsze miejsce to nie by³a ekonomia? Z jakiego powodu, je¶li nie ekonomicznego, ten program musia³ byæ ma³y i szybki? Teraz ekonomia dzia³a tak samo, tylko sprzêt jest trochê inny. Zobacz sobie jakie mo¿liwo¶ci ma Raspberry Pi i przy jakiej cenie.

Nie mówiê, ¿e nie...

Bezbajerowo. Jeszcze pod DOSem. TP 3 dawa³ ok. 30 kilku kB, TP7 ju¿ poni¿ej

Tylko po co ona, gdy jedynym zadaniem programu by³o krok po kroku wyrzuciæ kilkana¶cie znaków na ekran... w C64 schodzi³êm poni¿ej 50 bajtów w³±cznie z danymi (fakt, skaka³em do podprogramu... ale gdzie¶ widzia³em listing, który bezp¶rednio dawa³... i nie obros³o to w zbêdny kod. Ale to w C64 by³ mus, liczy³ siê ka¿dy bajt. I dobrze.

Choæby w czasach, w których to robi³em, ¿e taka ró¿nica by³a istotna. A je¶li program spokojnie mo¿e byc ma³y, to nie widzê powodów, aby by³ du¿y.

Z tre¶ci programu. Nic nie by³o definiowane w tre¶ci przez include, ¿adnej dyrektywy do³±czaj±cej, nic, poza tymi 4 liniami.

Klepa³em trochê, ale ju¿ zapomnia³em szczegó³ów... tylko czemu wspomniany przeze mnie Zdzich umia³ siê zachowaæ i nie ty³ zanadto?

Robi - wy¶wietla na ekranie "Dzien dobry" (bez ogonka, bo wtedy ich prawie nie znano(1991)) Ja chcê od programu, aby maj±c tekst j.w., program zrobi³: Licz±c od pierwszego do ostatniego znaku, pobra³ je po kolei i wyrzuci³ na ekran. Niech 100 bajtów kodu pobiera te znaki, drugie 100 wyprowadzi na ekran, trzecie 100 utrzyma to w ca³o¶ci. Ju¿ nie bêdê a¿ tak sk±py. Ale, ¿eby to nie by³o po 10 kB, bo co by te 10 kB robi³o w swojej czê¶ci zadania... czy ile tego by³o... skoro setka poradzi³± sobie równie dobrze... to co robi pozosta³e 9900 bajtów? Ja je chcê wyrzuciæ. Tylko tyle.

Trafnie to uj±³e¶. Program ma KONKRETNE zadanie. Dajmy na to, ma drapaæ siê po dupie. Nie potrzebujê wiêc sprawdzania, czy przypadkiem nie mruga oczami, czy nie rosn± mu bia³e w³osy, nie potrzebujê do³±czania biblioteki machania nogami. Program ma tylko i wy³±cznie drapaæ siê po dupie, a co za tym idzie, zawieraæ tylko i wy³±cznie procedury drapania siê po dupie (i zintegrowane, albo w oddzielnym pliku, dane do drapania siê po dupie, czyli dupa jest tu - wspó³rzêdne x,y,z, razem ¶jakie¶ powiedzmy, 12 bajtów, zak³adaj±c hojne

32-bitowe okre¶lanie pozycji ka¿dej ze wspó³rzêdnych, punkt pocz±tkowy x1,y1,z1, punkt koñcowy x2,y2,z2, a ca³y ruch drapania jest prostym ruchem miêdzy pocz±tkiem a koñcem. Przez wyrzucenie wszystkiego niepotrzebnego chcê osi±gn±æ, by program, opieraj±c siê mo¿liwie o najmniejsz± mo¿liw± ilo¶æ pamiêci, przez brak konieczno¶ci zajmowania siê zbêdnymi kawa³kami kodu, by³ w stanie w czasie rzeczywistym przeliczaæ ruch rêki do drapania siê po dupie tak, aby nie musia korzystaæ z predefiniowanych tablic okre¶laj±cych kolejne pozycje drapaka. W razie czego pozwalam sobie jedynie na pêtlê spowalniaj±c±, je¶li ruch by³by za szybki. Oraz prost± procedurê sprawdzaj±c±, czy ci±g miêdzy pocz±tkiem i koñcem nie wychodzi poza dupê. Zgrubnie szacujê taki program na 300-500 bajtów.

Ja ju¿ od dawna tak to widzê.

Nie inaczej.

Hmm... nie wiem, w czym by³ pisany Norton Commander, ale na XT 4.77/8 startowa³ poni¿ej sekundy. GW-Basic (ok. 60kB) startowa³ natychmiast. A z dyskietki przez czas potrzebny do odczytania kodu programu. Dzisiaj... mam maszynê 3 GHz dwurdzeniow±, Total Commander startuje d³u¿ej...

Bo system taki jak windows powinien zostac napisany od nowa nie jako nakladka nakladki na nakladke.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required