-
X-Received: by 2002:ac8:1244:: with SMTP id g4mr27728549qtj.304.1553632099320; Tue,
26 Mar 2019 13:28:19 -0700 (PDT)
X-Received: by 2002:ac8:1244:: with SMTP id g4mr27728549qtj.304.1553632099320; Tue,
26 Mar 2019 13:28:19 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.
85.160.216.MISMATCH!t9no194037qtn.0!news-out.google.com!d8ni43qtr.1!nntp.google
.com!t9no194024qtn.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not
-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 26 Mar 2019 13:28:19 -0700 (PDT)
In-Reply-To: <b...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.30;
posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 5.172.255.30
References: <7...@g...com>
<1...@g...com>
<d...@g...com>
<1...@g...com>
<b...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2...@g...com>
Subject: Re: elementy furii
From: fir <p...@g...com>
Injection-Date: Tue, 26 Mar 2019 20:28:19 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:213428
[ ukryj nagłówki ]W dniu wtorek, 26 marca 2019 15:57:38 UTC+1 użytkownik fir napisał:
> W dniu wtorek, 26 marca 2019 13:50:08 UTC+1 użytkownik fir napisał:
> > W dniu wtorek, 26 marca 2019 13:37:41 UTC+1 użytkownik fir napisał:
> > > W dniu wtorek, 26 marca 2019 12:08:09 UTC+1 użytkownik fir napisał:
> > > > W dniu wtorek, 26 marca 2019 11:30:01 UTC+1 użytkownik fir napisał:
> > > > > w zeszly roku w kilka dni napisalem pewne elementy kompilatora takiego
jakby "pre c"
> > > > > (jezyka ktory w zamysle raczej jest wstepem
> > > > > do C/C2/hipermodularnego c bo prawie nic tam nie dziala, no ale mowie
pisalem to z piec dni
> > > > >
> > > > > tak czy owak da sie skompilowac cos w rodzaju helloworda na windows 32
(wywoluje moja wlasna dllke by ladniej wygladalo niz zwyczjanie na konsoli)
> > > > >
> > > > > http://minddetonator.htw.pl/furia3.zip
> > > > >
> > > > > screenshot w outputu
> > > > >
> > > > > http://minddetonator.htw.pl/furia3.png
> > > > >
> > > > > bylo to o tyle mozliwe ze z rok wczesniej (w 2017? niezbyt pamietam te daty
bo ostatnio sie zaczalem mega lenic) nap[isalem asembler (organic asm)... ...ten asm
nie ma tez wklepanych wielu mnemonikow, bo mi sie nie chcialo, nie ma tez chyab
wszystkich trybow adresowan, dlatego rozbudowayanie tego kompilatora wymaga grzebania
i w jednym i drugim i przez to jest lekko ciezkie (nie az tak co prawda ale chyba
faktycznie przyznam ze pisanie kompilatora i asma na x86/win32
> > > > > jest projektem nieco trudniejszej klasy niz
> > > > > pisanie bardziej typowych apek.. nie jest 'zbyt' trudne ale poprostu
trzebbyc involved (troche bardziej niz zwykle) i to troche meczy, nie zawsze mi sie
chce
> > > > >
> > > > > z drugiej strony fajnie miec swoj kompilatorek..zastanawiam sie kiedy sie w
sobie zewre by napisac troche wiecej featurez :/
> > > >
> > > > och god, ladnie napisalem posta i przypadkowe nacisniecie dwu klawiszow naraz
spowodowalo ze nizknal w ulamek sekundy
> > > >
> > > > kod jaki to kompiluje jest taki
> > > >
> > > >
> > > > int becground_color: 0
> > > >
> > > > int RunFramePointer: 0
> > > >
> > > > void RunFrame()
> > > > becground_color = becground_color + 65536
> > > > becground_color = becground_color + 512
> > > > becground_color = becground_color + 3
> > > >
> > > > cdecl green_fire SprintCB(-1, becground_color)
> > > > cdecl green_fire ClearFrameData(becground_color);
> > > > cdecl green_fire SprintXY(10, 10)
> > > > cdecl green_fire sprint(" Helllo World from Furia \x00");
> > > > return
> > > >
> > > >
> > > > void main()
> > > > asm mov eax RunFrame
> > > > asm mov (RunFramePointer) eax
> > > > cdecl green_fire RegisterRunFrame( RunFramePointer );
> > > > cdecl green_fire SetSleepValue(30)
> > > > cdecl green_fire SetupWindow2(" furia pre c compiler \x00", 4,
5, 567, 443 );
> > > > return
> > > >
> > > > troche slabo to przypomina c ale pisalem by jak nalatwiej mis ie to pisalo a
nie by od razu przypominalo c
> > > >
> > > > chyba 3 rzeczy powinienem poprawic na poczatek,
> > > >
> > > > 1) moj asm nie wspiera o ile pamietam wywolywanie funkcji z calbackami
dlatego mam tutaj stub w asmie
> > > >
> > > > asm mov eax RunFrame
> > > > asm mov (RunFramePointer) eax
> > > > cdecl green_fire RegisterRunFrame( RunFramePointer );
> > > >
> > > > zamiast
> > > >
> > > > cdecl green_fire RegisterRunFrame( RunFrame );
> > > >
> > > > a to daltego ze asm wspiera
> > > >
> > > > push (RunFramePointer)
> > > > call green_fire.RegisterRunFrame
> > > > pop eax
> > > >
> > > > ale nie
> > > >
> > > > push (RunFrame)
> > > > call green_fire.RegisterRunFrame
> > > > pop eax
> > > >
> > > > w pierwszej wersji etykiete jest z sekcji .data a w drugiej to label z codu
> > > >
> > > > ale to chyab mozna poprawic (jakbym sie troche skupil)
> > > >
> > > > 2)
> > > >
> > > > int becground_color: 0
> > > > int RunFramePointer: 0
> > > >
> > > > powinienem przerobic na zwykle
> > > >
> > > > int becground_color = 0
> > > > int RunFramePointer = 0
> > > >
> > > > nie wiem czemu tak nawet napisalem chyab chialem odrozniac
deklaracje-inicjalizacje od przypisan ale skoro int jest z lewej to wiadomo ze to
deklaracja
> > > >
> > > > 3) te wszystkie
> > > >
> > > > cdecl green_fire SprintXY(10, 10)
> > > >
> > > > wygladaja glupio jesli tego jest za duzo
> > > > wiec chyab trzeba zbudowac zbiorcza tablice importow cos w stylu
> > > >
> > > > import cdecl "green_fire" SprintXY SprintCB sprint RegisterRunFrame
SetSleepValue SetupWindow2
> > > >
> > > > co jest swoja draga mniej logiczne ale pozniej kody nizej wygladaja bardziej
c-owo
> > > >
> > > > ostatnio czuje sie jak na mega kacu 9zdrowie ciagle fatalne, dusi mnie w
plucahc niesamowicie), ale jakbym sie zebral to to mnie teraz czeka
> > >
> > > ok poprawilem tego calbacka,
> > >
> > > http://minddetonator.htw.pl/furia4.zip
> > >
> > > wiec kompilator kompiluje teraz ciut bardziej strawny kod
> > >
> > >
> > > int becground_color = 0
> > >
> > >
> > > void RunFrame()
> > > becground_color = becground_color + 65536 + 512 + 3
> > > cdecl green_fire SprintCB(-1, becground_color)
> > > cdecl green_fire ClearFrameData(becground_color);
> > > cdecl green_fire SprintXY(10, 10)
> > > cdecl green_fire sprint(" Helllo World from Furia \x00");
> > > return
> > >
> > >
> > > void main()
> > > cdecl green_fire RegisterRunFrame( &RunFrame );
> > > cdecl green_fire SetSleepValue(30)
> > > cdecl green_fire SetupWindow2(" furia pre c compiler \x00", 4, 5,
567, 443 );
> > > return
> > >
> > > musze dodac ze nie wszystkie "wyrazenia" dzialaja (praktycznie to prawie zadne)
> > > aiec trzeba tu troche rzeczy podopisywac,
> > > ale wywolania z dllek dzialaja (dzilaja tez chyab proste ify i fory) wiec jest
> > > poczatkowy fun
> > >
> > >
> > > troche strach przyznam grzebac w moim asemblerze bo asembler jest troche
zagmatwany, najgorsze w nim jest to ze
> > > jak sie liczy adresy do etykiet to trzeba to sklafdowac, obliczac, a pozniej
jeszcze ew fizupowac i mozna sie troche pogubic, - sam jestem leniwy i nie zawsze
lubie sie zaglebiac a w powierzchniowym trybie nie wszystko da sie ad-hoc dopicac,
tak ze az sie balem grzebac w tym calbacku - ale jakos poszlo ;c
> >
> > inne problemy jest ze tam niemal nic nie dziala, np mam importowanie funkcji z
dllek ale nei mam importow zmiennych, musialbym grzebac chyba w asmie a mi si enei
chce, do tego nie ma tez chyab nawet przypisywania zwracanej zmiennej do inta,
> > do tego jak ja zarzuce callback (a moje libka dziala troche na calbackach to nie
> > mam narazie czytania lokalnych w tym calbacku ze stosu itd (wogole nie mam
zmiennych lokalnych)
> >
> > to wszystko nei sa strasznie duze poprawki ale tzreba to wklepac
> >
> > narazie chyba czas troche odpoczac i wypic keliszek wina za jednak pewien skuces
(wlasny kompilatorek z potencjalna kontrola nad wszystkimi etapami procesu to jest
jednak cos fajnego, khu)
>
> jeszcze troche bardziej rozbudowany przyklad
>
> http://minddetonator.htw.pl/furia5.zip
>
> int becground_color = 0
> int mouse_x = 0
> int mouse_y = 0
> int last_key_pressed = 0
> int PAGE_UP = 33
>
>
> void ProcessMouseMove()
> asm mov eax (esp+4)
> asm mov (mouse_x) eax
> asm mov eax (esp+8)
> asm mov (mouse_y) eax
>
> return
>
> void ProcessKeyDown()
> asm mov eax (esp+4)
> asm mov (last_key_pressed) eax
>
> if last_key_pressed = PAGE_UP
> cdecl green_fire ToggleFullscreen()
> ef
>
> return
>
> void RunFrame()
> becground_color = becground_color + 65536 + 512 + 3
> cdecl green_fire SprintCB(-1, becground_color)
> cdecl green_fire ClearFrameData(becground_color);
> cdecl green_fire SprintXY(10, 10)
> cdecl green_fire sprint(" Helllo World from Furia \x00");
> cdecl green_fire SprintCB(0, becground_color)
>
> cdecl green_fire SprintXY(11, 20)
> cdecl green_fire sprint(" mouse x %d y %d \x00", mouse_x, mouse_y);
> cdecl green_fire SprintXY(11, 22)
> cdecl green_fire sprint(" key pressed %d \x00", last_key_pressed);
>
> return
>
>
> void main()
> cdecl green_fire RegisterRunFrame( &RunFrame );
> cdecl green_fire RegisterMouseMove( &ProcessMouseMove );
> cdecl green_fire RegisterKeyDown( &ProcessKeyDown );
>
> cdecl green_fire SetSleepValue(30)
> cdecl green_fire SetupWindow2(" furia pre c compiler \x00", 4, 5,
567, 443 );
> return
>
> musialem dac stuby we wlasnym zreszta asmie by moc czytac argumenty funkcji z
callbacka i jest tam tez watly if, ale pokazuje ze od biedy mozna w tym juz napisac
jakies apki, choc czlek by sie troche nameczyl bo zam malo tam rzeczy ciagle
zaimplementowane
>
> polecam odpalic nie jest to wirus (mozna przesanowac np antywirem online, np
>
> https://www.virustotal.com/pl/
w tym wirus ttal btw 5 pokazuje alerty a 60 nie, ale to dlatego ze sam generuje exe i
nie chialo mi sie wypelniac wszystkich pol, pozniej to poprawie
tak czy owak jestem zadowolony ze udalo sie trzasnac chocby taki kompilatorek -
trzasnalem go o ile pamietam w okolo tydzien.. i jest to pozytywny fakt
myslalem ze kompilator bedzie trudniejszy do pisania niz assembler a chyba jest
latwiejszy...
szkoda ze jestem na swoistym kacu (po pepsicoli), rowniez moje wyzsze zdolnosci
intelektualne chyab stepialy (przez co mzowiwe ze latwiej mi sie pisze, bo intelekt
genaralnie moze robic za 'big distraction' ) (nie chialbym jednak oglupiec na stale,
a to boje sie mi grozi)
Następne wpisy z tego wątku
- 26.03.19 22:00 Queequeg
- 26.03.19 22:18 Emru
- 26.03.19 22:47 Queequeg
- 27.03.19 16:59 fir
- 28.03.19 08:21 Queequeg
- 28.03.19 08:55 fir
- 28.03.19 09:19 g...@g...com
- 28.03.19 14:08 fir
- 28.03.19 17:22 fir
- 28.03.19 20:41 Queequeg
- 28.03.19 20:44 Queequeg
- 28.03.19 22:49 g...@g...com
- 28.03.19 23:59 fir
- 29.03.19 08:20 Roman Tyczka
- 29.03.19 09:17 g...@g...com
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO