-
Data: 2019-03-26 12:08:08
Temat: Re: elementy furii
Od: fir <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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
Następne wpisy z tego wątku
- 26.03.19 13:12 Queequeg
- 26.03.19 13:14 Queequeg
- 26.03.19 13:31 fir
- 26.03.19 13:37 fir
- 26.03.19 13:50 fir
- 26.03.19 15:46 Queequeg
- 26.03.19 15:57 fir
- 26.03.19 16:01 Queequeg
- 26.03.19 21:28 fir
- 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
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 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??
Najnowsze wątki
- 2025-03-12 Ryga => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i Kad
- 2025-03-12 Poznań => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-12 Warszawa => Programista C <=
- 2025-03-12 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-03-12 64 proc. kierowców zrobi dodatkowo maks. 500 m, aby przy okazji zatankować pojazd
- 2025-03-12 Warszawa => Generative AI Engineer <=
- 2025-03-12 Dęblin => Node.js / Fullstack Developer <=
- 2025-03-12 Warszawa => Gen AI Engineer <=
- 2025-03-12 Warszawa => Data Engineer (Tech Lead) <=
- 2025-03-12 Gdańsk => PHP Developer <=
- 2025-03-12 China-Kraków => Production Coordinator / Representant Product Dev <=
- 2025-03-12 Warszawa => JavaScript / Node / Fullstack Developer <=
- 2025-03-12 China-Kraków => Key Account Manager IT <=
- 2025-03-12 Warszawa => Java Developer <=
- 2025-03-12 Warszawa => Junior Digital Product Manager <=