Board.KolibriOS.org

Official KolibriOS board
It is currently Sun May 19, 2019 9:43 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 25 posts ]  Go to page Previous 1 2
Author Message
 Post subject:
PostPosted: Wed Jun 13, 2007 1:26 pm 
Offline

Joined: Thu Jan 25, 2007 4:45 pm
Posts: 135
Knott

А зачем ВМ, если твой компилер переводит яву в фасм?


Top
   
 Post subject:
PostPosted: Wed Jun 13, 2007 5:15 pm 
Я же писал. Мой компилятор имеет много ограничений.


Top
   
 Post subject:
PostPosted: Tue Jun 19, 2007 7:21 am 
Knott, с удовольствием помогу тебе в написании проекта. Сам собирался этим заняться.
В частности могу сделать лексический, синтаксический и семантический анализаторы.

Не смог понять из постов (может невнимательно прочел), на чем написан твой нынешний компилятор?


Top
   
 Post subject:
PostPosted: Tue Jun 19, 2007 8:56 pm 
Так, давай раставем фсе точки над i.

Сначало это был компилятор, но потом, после посешения стешнего IRC, миня уговорили делать виртуальную машину. Причем не Java, а .NET .
После долгого времяни, писания прототипов, чтения документации(О процессорах, о виртуальных машинах, о компиляторов(И CIL и Native)),
я понил - .NET, с его хитро-вы****ым JIT мине не асилить. Да и недумаю что Kolibri поташил бы мою расработку(Веть песать нада на АСМ).
После этого я решил углубится в Java VM. Мне понравилось то что остоваясь высокоуровневой виртуальной машиннай, она имеет незкоуровневый дизайн(Что добовляет скорости). Все же я решил делать компилятор из компилированых Java байткадофф в native кот. Тоесть некаких анализаторов.

Но потом я буду заниматся "своим" компайлером.

Пишу я на C#.


Top
   
 Post subject:
PostPosted: Wed Jun 20, 2007 12:32 pm 
Гм... за Java VM респект.
Только вот я вижу гораздо больше смысла в написании полноценного интерпретатора под KoOS, потому что, написав транслятор "из компилированых Java байткадофф в native кот", мы не сможем полноценно программить без сторонних ОС. А хочецо! )
С другой стороны, написание упомянутого транслятора на ЯВУ гораздо проще и приятнее, чем на АСМ.

Интересна следующая идея:
1) пишем транслятор
2) на Java пишем VM или что-то подобное..
3) транслируем под KoOS
4) правим баги )
5) радуемсо :-D

PS. Приведи ссылки на те материалы, которые ты курил в эту тему.


Top
   
 Post subject:
PostPosted: Wed Jun 20, 2007 1:49 pm 
Я счас набралсо опыта. И в принципе могу писать Яво ВМ пот коос.
Толька мне нужна помосч!.

Толька на чем песать? На Си(Бес ПП) или на Асм?

Есле что, стучитесь в асю 307435176.

Зы. Запыл про сцылке :)

Первым делом это VM Спек:
http://java.sun.com/docs/books/jvms/sec ... C.doc.html

Потом онлайн опкоде референс:
http://mrl.nyu.edu/~meyer/jvmref/ref-Java.html


Top
   
 Post subject:
PostPosted: Wed Aug 08, 2007 12:32 pm 
Ъняъпз леимпмоме аоекз, з дмюуйъз леимпмоьс оецяйщпчпма.

Code:
format ELF



; Ыпмп кепмд ле лятел...
; Уънмйщяцепъз пмйщим дйз имлъпояипмоч мюгеипч Entrypoint
; (Импмоьх ле лятел - уюм Entrypoint леимдч ле ъмцдчёпъз).


; Method: knott/Entrypoint#<init>!()V

;public Q25knott10Entrypoint233cinit3e2e2829V

;Q25knott10Entrypoint233cinit3e2e2829V:

;   push ebp

;   mov ebp,esp

;   sub esp,8

;   .JL_0:

;   .JL_1:

;   push dword [ebp+-4]

;   call Q34java4lang6Object233cinit3e2e2829V

;   .JL_4:

;   jmp .footer

;   .footer:

;   add esp,8

;   mov esp,ebp

;   pop ebp

;   ret


; Method: knott/Entrypoint#main!([Ljava/lang/String;)V

public Q25knott10Entrypoint23main2e285bLjava2flang2fString3b29V

Q25knott10Entrypoint23main2e285bLjava2flang2fString3b29V:

   push ebp

   mov ebp,esp

   sub esp,24


   .JL_0:

   call Q25knott10Entrypoint23getZeroLong2e2829J

   .JL_3:

   mov [ebp+-8],eax

   mov [ebp+-12],ebx

   .JL_4:
   .JL_5:
        ; For compability...
   mov [ebp+-16],0
   mov [ebp+-20],0

   .JL_6:

   .JL_7:

   .JL_8:

   push dword [ebp+-8]

   push dword [ebp+-12]

   push 0

   push 0

   call Q25knott10Entrypoint23compareLongs2e28JJ29Z

   .JL_11:

   mov [ebp+-24],eax

   .JL_13:

   .JL_15:

   mov eax,[ebp+-24]

   cmp eax,0

   jne .JL_21

   .JL_18:

   call Q25knott10Entrypoint23hello2e2829V

   .JL_21:

   jmp .footer


   .footer:

   add esp,24

   mov esp,ebp

   pop ebp

   ret


; Method: knott/Entrypoint#hello!()V

public Q25knott10Entrypoint23hello2e2829V

Q25knott10Entrypoint23hello2e2829V:

   .JL_0:

   .JL_2:

   push 104

   call Q25knott10Entrypoint23outch2e28C29V

   .JL_5:

   .JL_7:

   push 101

   call Q25knott10Entrypoint23outch2e28C29V

   .JL_10:

   .JL_12:

   push 108

   call Q25knott10Entrypoint23outch2e28C29V

   .JL_15:

   .JL_17:

   push 108

   call Q25knott10Entrypoint23outch2e28C29V

   .JL_20:

   .JL_22:

   push 111

   call Q25knott10Entrypoint23outch2e28C29V

   .JL_25:

   jmp .footer

   .footer:

   ret


; Method: knott/Entrypoint#getZeroLong!()J

public Q25knott10Entrypoint23getZeroLong2e2829J

Q25knott10Entrypoint23getZeroLong2e2829J:

   .JL_0:

   .JL_1:

   xor eax,eax

   xor ebx,ebx

   jmp .footer

   .footer:

   ret


; Method: knott/Entrypoint#compareLongs!(JJ)Z

public Q25knott10Entrypoint23compareLongs2e28JJ29Z

Q25knott10Entrypoint23compareLongs2e28JJ29Z:

   push ebp

   mov ebp,esp

   sub esp,12

   .JL_0:

   .JL_1:

   .JL_2:

   mov edx,[ebp+-12]

   mov ecx,[ebp+-16]

   mov ebx,[ebp+16]

   mov eax,[ebp+12]

   sub edx,ebx

   test edx,edx

   je .dl1

   cmp edx,0

   jl .dl2

   jmp .dl3

   .dl1:

   sub ecx,eax

   test ecx,ecx

   je .dl4

   cmp ecx,0

   jl .dl2

   jmp .dl3

   .dl2:

   mov eax,-1

   jmp .dl5

   .dl3:

   mov eax,1

   jmp .dl5

   .dl4:

   mov eax,0

   .dl5:

   .JL_3:

   cmp eax,0

   jle .JL_8

   .JL_6:

   .JL_7:

   mov eax,1

   jmp .footer

   .JL_8:

   .JL_9:

   xor eax,eax

   jmp .footer

   .footer:

   add esp,12

   mov esp,ebp

   pop ebp

   ret


extrn Q34java4lang6Object233cinit3e2e2829V

extrn Q25knott10Entrypoint23outch2e28C29V



Ыпм ъйежич ночайельх(Пмблее мпрмокмпуомачлуьх) имд - оецяйщпчп очюмпь кмежм почлъйзпмоч...
Амп уъсмдльх имд, уъ ичпмомжм з имкнуйуй.

Code:
package knott;

public class Entrypoint {

    // Main entrypoint method.
    public static void main(String[] args) {
         long a = getZeroLong();
         long b = 0;

         boolean b = compareLongs(a, b);

         if (b == false) {
             hello();
         }
    }

    //  native - оечйуцчфуз кепмдч, лч мпйублмк мп заь
    //  омдлмк зцьие.
    private static native void outch(char arg0);

    private static void hello() {
        outch('H'); outch('e'); outch('l');
        outch('l'); outch('o');
    }

    private static long getZeroLong() {
        return 0;
    }

     private static boolean compareLongs(long a, long b) {
          return (a > b);
     }
}




А нйчле ъдейчпщ улйчхлулж(Мъмюм чипячйел дйз заь - уюм уънмйщцявпъз имомпиуе кепмдь).
Еъйу ъухбчъ ъдейчпщ улйчхл мнпукуцчфуу(Лч яомале ючхп имдма заь), пм нмйябупъз пчимх имд.

Code:
main:
   .JL_0:
   .JL_2:
   push 104
   call Q25knott10Entrypoint23outch2e28C29V
   .JL_5:
   .JL_7:
   push 101
   call Q25knott10Entrypoint23outch2e28C29V
   .JL_10:
   .JL_12:
   push 108
   call Q25knott10Entrypoint23outch2e28C29V
   .JL_15:
   .JL_17:
   push 108
   call Q25knott10Entrypoint23outch2e28C29V
   .JL_20:
   .JL_22:
   push 111
   call Q25knott10Entrypoint23outch2e28C29V
   ret


Пчи номуцмхдёп ноу нмйлмк улйчхлулже. Пмеъпщ ъдейма улйчхл, имкнуйзпмо нмхкёп бпм аеъде уънмйцявпъз имлъпчлпь, у оецяйщпчп аьбуъйелуз (b == false) уцаеъпел
ам аоекз имкнуйзфуу. Кепмд hello пмте улйчхлупъз(Ноу яъймауу b == true мл пмте юядеп улйчхлупъз, лм нмъйе мнпукуцчфуу Dead code elimination ядчйупъз =) ).

Дчк леимпмоье мюгзълелуз нм имдя:

Цчбек аеъде ыпу .JL_XX?
Ыпм чдоеъч ючхп имдма заь. Пмеъпщ JL_00 ъммъпаепъаяеп улпъояифуу нмд чдоеъмк 0. Ч JL_22, нмд 22h.
Улмждч юьачеп бпм нмд улъпояифех лепя улъпояифух - ыпм юьачеп йуюм нмпмкя бпм улъпояифуз ле укнйекелпуомачлч,
уйу номъпм лелятлч.

Нмбекя ноу

Code:
    // Main entrypoint method.
    public static void main(String[] args) {
         long a = getZeroLong();
         long b = 0;

         boolean b = compareLongs(a, b);

         if (b == false) {
             hello();
         }
    }


Ноу аьцмае compareLongs, уцаеъплм бпм b имлъпчлпч, лм а имде

Code:
        ; Дояжмх имд
   .JL_4:
   .JL_5:
        ; For compability...
   mov [ebp+-16],0
   mov [ebp+-20],0

   .JL_6:
   .JL_7:
   .JL_8:
   push dword [ebp+-8]
   push dword [ebp+-12]

   push 0
   push 0
   call Q25knott10Entrypoint23compareLongs2e28JJ29Z


Имлъпчлпч ъмсочлзепъз ичи ймичйщлчз неоекеллчз, лм а ъпеи, неоедчёпъз ълмам ичи имлъпчлпч... Цчбек?
Ыпм юьйм ъдейчлм лч аъзиух ъйябух - еъйу неоекеллчз аьсмдуп цч ноедейь "номъпмжм юймич", пм млч дмйтлч юьпщ а ймичйщлмх неоекеллмх.
Ч ъехбчъ, мнпукуцчфуу пунч "Номъпьс юймима" ле оечйуцмачлч...


Top
   
 Post subject:
PostPosted: Wed Aug 08, 2007 12:35 pm 
Vot blin...
Whata fuck?


Top
   
 Post subject:
PostPosted: Wed Aug 08, 2007 1:50 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 7:57 pm
Posts: 835
Да не переживай, с кем не бывает! :D


Top
   
PostPosted: Mon Dec 24, 2007 7:55 pm 
Offline

Joined: Thu Dec 21, 2006 10:51 am
Posts: 88
Глянь суда. ИМХО но ява для десктопных приложений нафиг никому не нужна.

http://download.java.net/jdk6/
http://java.sun.com/javase/downloads/index.jsp

Вроде как сорцы виртуальной машины Java 2SE стали доступны.

_________________
Если бы строители строили здания, так же как программисты пишут программы первый же залетевший дятел разрушил бы цивилизацию.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 25 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited