eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingelementy furii › Re: elementy furii
  • X-Received: by 2002:a37:4f04:: with SMTP id d4mr5528549qkb.38.1553603860744; 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: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.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.h
    ighwinds-media.com!news.highwinds-media.com!t9no4060069qtn.0!news-out.google.co
    m!d8ni3849qtr.1!nntp.google.com!t9no4060062qtn.0!postnews.google.com!glegroupsg
    2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Tue, 26 Mar 2019 05:37:40 -0700 (PDT)
    In-Reply-To: <1...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.236;
    posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
    NNTP-Posting-Host: 5.172.255.236
    References: <7...@g...com>
    <1...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <d...@g...com>
    Subject: Re: elementy furii
    From: fir <p...@g...com>
    Injection-Date: Tue, 26 Mar 2019 12:37:40 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Bytes: 7109
    X-Received-Body-CRC: 2052551101
    Xref: news-archive.icm.edu.pl pl.comp.programming:213422
    [ ukryj nagłówki ]

    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

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: