Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн окт 23, 2017 10:54 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 25 сообщений ]  На страницу Пред. 1 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 13, 2007 1:26 pm 
Не в сети

Зарегистрирован: Чт янв 25, 2007 4:45 pm
Сообщения: 135
Knott

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 13, 2007 5:15 pm 
Я же писал. Мой компилятор имеет много ограничений.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 19, 2007 7:21 am 
Knott, с удовольствием помогу тебе в написании проекта. Сам собирался этим заняться.
В частности могу сделать лексический, синтаксический и семантический анализаторы.

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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 19, 2007 8:56 pm 
Так, давай раставем фсе точки над i.

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

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

Пишу я на C#.


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

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

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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 08, 2007 12:32 pm 
Ъняъпз леимпмоме аоекз, з дмюуйъз леимпмоьс оецяйщпчпма.

Код:
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



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

Код:
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);
     }
}




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

Код:
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.
Улмждч юьачеп бпм нмд улъпояифех лепя улъпояифух - ыпм юьачеп йуюм нмпмкя бпм улъпояифуз ле укнйекелпуомачлч,
уйу номъпм лелятлч.

Нмбекя ноу

Код:
    // 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 имлъпчлпч, лм а имде

Код:
        ; Дояжмх имд
   .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


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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 08, 2007 12:35 pm 
Vot blin...
Whata fuck?


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 08, 2007 1:50 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 7:57 pm
Сообщения: 834
Да не переживай, с кем не бывает! :D


Вернуться к началу
 Заголовок сообщения: Re: Компилятор ЯВЫ
СообщениеДобавлено: Пн дек 24, 2007 7:55 pm 
Не в сети

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

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

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

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 25 сообщений ]  На страницу Пред. 1 2

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB