🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #215524

Re: elementy furii

#215524
From: fir
Date: Tue, 26 Mar 2019 12:37
137 lines
7038 bytes
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
Technical Details
Message-ID: <d8806ca8-f1c6-47e2-97ac-a7820c663079@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!t9no4060069qtn.0!news-out.google.com!d8ni3849qtr.1!nntp.google.com!t9no4060062qtn.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <72227e68-b3c3-4b05-ac8a-aa741d510212@googlegroups.com> <143d8bb8-0807-44bf-8847-6a4a666d98e8@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:32ae:: with SMTP id z43mr873383qta.61.1553603860877;        Tue, 26 Mar 2019 05:37:40 -0700 (PDT)
X-Received: by 2002:a37:4f04:: with SMTP id d4mr5528549qkb.38.1553603860744; Tue, 26 Mar 2019 05:37:40 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!t9no4060069qtn.0!news-out.google.com!d8ni3849qtr.1!nntp.google.com!t9no4060062qtn.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 26 Mar 2019 05:37:40 -0700 (PDT)
In-Reply-To: <143d8bb8-0807-44bf-8847-6a4a666d98e8@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.236; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 5.172.255.236
References: <72227e68-b3c3-4b05-ac8a-aa741d510212@googlegroups.com> <143d8bb8-0807-44bf-8847-6a4a666d98e8@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d8806ca8-f1c6-47e2-97ac-a7820c663079@googlegroups.com>
Subject: Re: elementy furii
From: fir <profesor.fir@gmail.com>
Injection-Date: Tue, 26 Mar 2019 12:37:40 +0000
X-Received-Bytes: 7109
X-Received-Body-CRC: 2052551101
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit