eGospodarka.pl

eGospodarka.plGrupypl.comp.programming › elementy furii
Ilość wypowiedzi w tym wątku: 32

  • 1. Data: 2019-03-26 11:29:59
    Temat: elementy furii
    Od: fir <p...@g...com>

    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 :/


  • 2. Data: 2019-03-26 12:08:08
    Temat: Re: elementy furii
    Od: fir <p...@g...com>

    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


  • 3. Data: 2019-03-26 13:12:57
    Temat: Re: elementy furii
    Od: q...@t...no1 (Queequeg)

    fir <p...@g...com> wrote:

    > http://minddetonator.htw.pl/furia3.zip

    Zapomniałeś dołączyć źródeł.

    Btw, podobają mi się komunikaty błędów z tej twojej dll-ki.

    this shouldnt appear
    unfortunate error detected
    p0zioma linia poza zakresem
    didnt found file %s
    dhgekjh
    cannot mallock data for file %s
    unsupported case atthe moment
    cant open process for get memory info
    tryin connect to server '%s'

    Jak można być takim analfabetą i jeszcze się tym chwalić?

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 4. Data: 2019-03-26 13:14:21
    Temat: Re: elementy furii
    Od: q...@t...no1 (Queequeg)

    fir <p...@g...com> wrote:

    > int becground_color: 0
    > int RunFramePointer: 0

    Czy jest tu jakaś konwencja? Czemu nie BecgroundColor lub
    run_frame_pointer?

    Pomijając, że _back_ground.

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 5. Data: 2019-03-26 13:31:44
    Temat: Re: elementy furii
    Od: fir <p...@g...com>

    W dniu wtorek, 26 marca 2019 13:12:59 UTC+1 użytkownik Queequeg napisał:
    > fir <p...@g...com> wrote:
    >
    > > http://minddetonator.htw.pl/furia3.zip
    >
    > Zapomniałeś dołączyć źródeł.
    >
    > Btw, podobają mi się komunikaty błędów z tej twojej dll-ki.
    >
    > this shouldnt appear
    > unfortunate error detected
    > p0zioma linia poza zakresem
    > didnt found file %s
    > dhgekjh
    > cannot mallock data for file %s
    > unsupported case atthe moment
    > cant open process for get memory info
    > tryin connect to server '%s'
    >
    > Jak można być takim analfabetą i jeszcze się tym chwalić?
    >
    to robocza wersja baranie z mozgiem wielkosci kostki gry

    pisane bardzo szybko w kilka dni wiec nie dbam o mniej istotne sprawy.. oczywiscie
    zrozumienie tego wymaga miernego poziomu inteligencji a nie imbecyla wiec twoj
    problem typowy dla imbecyla cie dreczy


  • 6. Data: 2019-03-26 13:37:40
    Temat: Re: elementy furii
    Od: fir <p...@g...com>

    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


  • 7. Data: 2019-03-26 13:50:06
    Temat: Re: elementy furii
    Od: fir <p...@g...com>

    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)


  • 8. Data: 2019-03-26 15:46:02
    Temat: Re: elementy furii
    Od: q...@t...no1 (Queequeg)

    fir <p...@g...com> wrote:

    > to robocza wersja baranie z mozgiem wielkosci kostki gry

    No nie, czy to wersja robocza czy nie, to nie tłumaczy takiego poziomu
    analfabetyzmu.

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 9. Data: 2019-03-26 15:57:36
    Temat: Re: elementy furii
    Od: fir <p...@g...com>

    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/




  • 10. Data: 2019-03-26 16:01:12
    Temat: Re: elementy furii
    Od: q...@t...no1 (Queequeg)

    fir <p...@g...com> wrote:

    > polecam odpalic nie jest to wirus

    Nie wierzę na słowo. Znów zapomniałeś dołączyć źródeł, pisząc na grupę o
    *programowaniu*.

    Tylko idiota uruchomi program .exe z nieznanego źródła. A tak to każdy
    mógłby sobie sam skompilować i poeksperymentować.

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0

strony : [ 1 ] . 2 ... 4



Szukaj w grupach

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: