Skocz do zawartości

Compi

Użytkownicy
  • Postów

    490
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Compi

  1. Compi

    Slap

    Tak więc przez ten czas, leniwie po nocach opracowałem składnie, którą powinien mieć język wysokiego poziomu. Oczywiście, jest to Turing Tarpit, czyli język jest zupełny w sensie Turinga. Kod można sobie spokojnie zagnieżdżać, nie ma z tym problemu. Myślę nad dodaniem rekurencji i zmiennych lokalnych. Ciekawym aspektem byłoby też, gdybym dodał klasy i obiekty, ale jeszcze nie mam pomysłu jak to zaimplementować. Co się zmieniło? DM+ stał się maszyną wirtualną (?) a Slap to translator do komend niższego poziomu. Dodałem też tablice, na razie jednopoziomowe, ale myślę, że nie będzie problemu je rozszerzyć. Slap jest w stanie obliczać złożone równania matematyczne, np: GML log(beer^2*3/4*4+1-1.92*beer)); Gdzie beer to zmienna liczbowa. Buduje bibliotekę standardową, i dll w którym nie funkcję natywne nie chcą się wywoływać przez stdcall O to przykład liczenia silni do 100 (Duże liczby wyświetlane są jako notacja wykładnicza) GML %import standard% def (silnia); var silnia var step var formula formula:=n repeat n-1 step:=n formula (formula*step); silnia:=formula while ( n > 2 ) return //Program liczący silnie. Przykład SLAP def (entry); call initconsole(Silnia,); var n call writeconsole(Podaj liczbe: ,); call readln(); n:=readln call silnia(); call writeconsole(silnia,); Link do downloadu w pierwszym poście (IDE uruchamiamy przez start.bat)
  2. Compi

    Slap

    Jak już mówiłem, ulepszam mój języczek o zagnieżdżanie, funkcje i bloki: GML //Taki sobie przykład odliczania w dół def (konsola) external AllocConsole:kernel32 , return def (pisz) external puts:clib xx, return def (entry) %no_out% var zmienna1 var xx xx:=100; zmienna1:=TEST call konsola repeat call pisz xx-1 until (xx > 0); external FreeConsole:kernel32 , Ten o to programik odliczy nam od 100 w dół przy pomocy biblioteki kernel32 i clib. Muszę zrobić biblioteke standardowo, jak każdy szanujący się jezyk posiada. Powyższy kod jest ładnie przetłumaczony do kodu niższego poziomu: GML //Taki sobie przykład odliczania w dół ::konsola var AllocConsole RG1:=##0 RG2:=##0 RG3:=##0 RG4:=##0 RG5:=##0 extl kernel32,AllocConsole AllocConsole:=RG0 return ::pisz var puts RG1:=xx RG2:=##0 RG3:=##0 RG4:=##0 RG5:=##0 extl clib,puts puts:=RG0 return ::entry %no_out% var zmienna1 var xx xx:=100 zmienna1:=TEST call ::konsola ::rep00008B71 call ::pisz xx-1 cmp xx,0 if > ::rep00008B71 var FreeConsole RG1:=##0 RG2:=##0 RG3:=##0 RG4:=##0 RG5:=##0 extl kernel32,FreeConsole FreeConsole:=RG0 HALT Wszystko ładnie pięknie :)
  3. Compi

    Slap

    Drogi psiksie :) Rozbudowywuje właśnie DM+ o bloki, funkcje i iteracje. Zobaczymy co z tego wyjdzie
  4. Nie każdego z nas stać na kupienie serwera, lub nie chcemy tego robić, bo szkoda pieniędzy na małą stronke. Ja tak mam. Kupiłem sobie domene, ale strona stoi na ugu.pl Dzisiaj z nudów postanowiłem spróbować wyłączyć reklamy, nie płacąc im (typowy polak :)) Może ktoś już to wymyślił, nie wiem. Tak czy siak, jestem z siebie dumny, bo nie znam JavaScriptu. W head tworzymy sobie takie coś: GML <script type="text/javascript"> function replace_stuff() { document.body.innerHTML = document.body.innerHTML.replace('ugupl_',''); document.body.innerHTML = document.body.innerHTML.replace('ugupl_',''); document.body.innerHTML = document.body.innerHTML.replace('<iframe','<div'); } </script> Na końcu head, tuż przed </head> GML <script type="text/javascript">replace_stuff();</script> body: GML <body onload="replace_stuff();"> Dam sobie rękę uciąć, że to będzie działało wszędzie. Wystarczy tylko ugupl_ (część nazwy skrypty z reklamami) podmienić na odpowiednik Jak pomogłem, to chociaż Dziękuje napiszcie. @Info: Jeśli Javascript nie będzie działał, to zamiast części nazwy podmieńcie cały znacznik
  5. Compi

    Slap

    Tytuł: Slap Gatunek: Kompilator/Interpreter do wirtualnej maszyny DM+ Opis: Zagłębiając się w asemblera, dla treningu stworzyłem sobie interpretowalny język, składnią przypominający pascala i pythonga. Wyewoulował z interpretera wirtualnej maszyny. Pracuje nad wsparciem dla klas i wizualnych komponentów. Slap jest w stanie tworzyć "samostojące" pliki exe dla Windowsa. Pracuję także nad rozbudowaniem standardowej biblioteki o lepsze i ciekawsze funkcje. Zastosowanie? Myślę, że każdy znajdzie tu coś dla siebie. Ciekawostką jest to, że antywirusy nie przeszkodzą nam w niczym. Zagnieżdżanie i wywoływanie procedur działa. Chciałbym dodać rekurencje i wywoływanie zmiennych jako funkcji. Pracuje także nad helpem, bo moim zdaniem sam język i jego możliwości są dosyć ciekawe i obiecujące. Myślę, że za niedługo dodam implementacje języka, bo póki co, nadal się zmienia. @EDIT Tak więc przez ten czas, leniwie po nocach opracowałem składnie, którą powinien mieć język wysokiego poziomu. Oczywiście, jest to Turing Tarpit, czyli język jest zupełny w sensie Turinga. Kod można sobie spokojnie zagnieżdżać, nie ma z tym problemu. Co się zmieniło? DM+ stał się maszyną wirtualną, a Slap to translator do komend niższego poziomu. Dodałem też tablice, na razie jednopoziomowe, ale myślę, że nie będzie problemu je rozszerzyć. Slap jest w stanie obliczać złożone równania matematyczne, np: GML log(beer^2*3/4*4+1-1.92*beer)); Gdzie beer to zmienna liczbowa. Buduje bibliotekę standardową, i dll w którym nie funkcję natywne nie chcą się wywoływać przez stdcall Paradygmaty: -Proceduralny -Strukturalny -Obiektowy -Imperatywny Post edytowany: 31.12.12 Download: Pobierz mię! Rozmiar pliku: 1 Mb Przykładowy program: GML %import standard% def (silnia); var silnia var step var formula formula:=n repeat n-1 step:=n formula (formula*step); silnia:=formula while ( n > 2 ) return //Program liczący silnie. Przykład SLAP def (entry); call initconsole(Silnia,); var n call writeconsole(Podaj liczbe: ,); call readln(); n:=readln call silnia(); call writeconsole(silnia,);
  6. Compi

    PassDir

    To będziecie się bzykać przed kompem ;) Proste, nie? Sorry za offtop @EDIT: Ale z reguły nie ma co. Tak myślę, czy na czas zablokowania folderu nie szyfrować plików w środku. Na wypadek podglądu systemu plików z Linuksa. Co o tym sądzicie?
  7. Compi

    PassDir

    Nawet ;) Poza tym wątpie by rodzicie/dziewczyna/dzieci były w stanie rozkminić działanie
  8. Compi

    PassDir

    W następnym wydaniu, drodzy koledzy, proces hosts będzie nie do zabicia, chyba że KillBoxem ;)
  9. Compi

    PassDir

    Wywal plik %appdata%/bank.z i ten folder ustaw jako prywatny. Blokada działa :) Jutro patcha zrobię
  10. Compi

    PassDir

    Nie, ustawia ACL na folder i blokuje jego zmiane aż do wpisania hasła lub wywalenia procesu hosts.exe. W przyszłej wersji dopracuje kilka elementów i wtedy już tylko wpisanie hasła zadziała. Za chwilę wypuszczę patcha, bo zakradł się mały błąd //EDIT: OK Niech ktoś to sprawdzi na Windowsie 7
  11. PassDir Teraz już możesz trzymać ważne pliki pod kluczem, dzięki programowi PassDir! Tam możesz wybrać, które foldery mają być trzymane pod kluczem. Zabezpieczenia nie są jeszcze idealne, ale zwykły użytkownik nie powinien usunąć zabezpieczeń. Jak zablokować folder? Wypakuj program gdzieś do Program Files lub gdziekolwiek. Uruchom plik loader.exe Po uruchomieniu daj Set Password i wpisz wybrane przez siebie hasło Teraz kliknij Add me to autostart LOCK dodaje foldery do listy zablokowanych UNLOCK odblokowywuje. Teraz najlepiej wyloguj się i zaloguj do Windowsa. Jeżeli chcesz potem dodać/usunąc foldery z listy, uruchom loader.exe Pamiętaj, pliki hosts i loader muszą być w tym samym folderze! Pobierz
  12. Oczywiście że jest internet ;)
  13. Mogę zrobić boot loadera na pamięci flash (czyt. MicroSD)
  14. Słyszałem, że tablety x86 wchodzą na rynek. Poza tym Asus wypuścił Pico-ITX z prockiem AMD, też x86 Może dałoby się coś posklejać i zamknąc w obudowie z dotykowym ekranem?
  15. Może GML if ListView1.Strings[ItemIndex] <> ''
  16. Ja zrobiłem jednobitowe alu,ale to chyba trochę za mało :) Ale znam się trochę na tym ;)
  17. Ja kocham to że gdy wcisnę skrót to włącza się shell w aktualnym folderze (Seniorom się na pewno spodoba) Skoro to ma być prosty system, niech nie wymaga od użytkownika jakiejkolwiek ingerencji podczas startowania, tak jak w telefonach. No
  18. Radziłbym grafitowe. Plastiki fajnie się kruszą
  19. @up No szkoda. Tym bardziej, że nie masz dowodów. System jest dobry. Co ważniejsze się rozwija. 5/5
  20. move_towards_point i w stepie x = x div 8 * 8; y = y div 4 * 4;
  21. Czyli do każdego bajtu dodać 30h?
  22. Dajmy na to, że mam makro pisz "string" który sam dodaje zerowy bajt na końcu. Ale co zrobić, aby wyświetlić liczbę? Chciałbym skorzystać z przerwania 21h (NASM i *.Com) GML dx, str ah,9 int 21h str db "aosdjjadsjasd$"
×
×
  • Dodaj nową pozycję...