Board.KolibriOS.org

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

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




Начать новую тему  Ответить на тему  [ 25 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: Компилятор ЯВЫ
СообщениеДобавлено: Вт фев 27, 2007 2:21 pm 
Тут я решил позаниматся компиляторами и намотал компайлер языка похожего на ЯВУ(ну или на C#). Как вы думаете, возникли некоторые проблемы. Но если вам понравится идея я могу продолжить.

Вот синтаксис.

Код:
import meos.console;

public class Program {
   private int i, a;
   
   private void main(string[] args) {
      for (int i = 0; i < argCount(args); i++) {
         Console.println(i.toString() + ": " + args[i]);
      }
   }

   private int argCount(string[] args) {
      return args.lenght;
   }
}

public enum Bool {
   True = 1,
   False = 0
}


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 2:47 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
http://www.ecma-international.org/publications/standards/Ecma-335.htm - спецификация .NET Framework
http://www.ecma-international.org/publications/standards/Ecma-334.htm - C# Language Specification
Если возьмёшся за реализацию будет отлично! Сразу скажу что эти стандарты халявные и не о каких лицензиях/выплатах речи быть не может.

P.S. На последок совет : занимайся тем что тебе нравится, и не вздумай как некоторые делать вид что они делают одолжение для проекта, мол никто не отвечает - значит никому не надо, и бросать работу. Будут вопросы - чем сможим поможим.


Последний раз редактировалось Ghost Вт фев 27, 2007 2:56 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 2:50 pm 
Ты коечего непонял. Дело в том что это не виртулальная машина.(Хотя следуюшия разработка это виртуальная машина).
Это полностью компилируемый язык. Компилится он в FASM. Сделано специально для Kolibri.

В этом языке, (Рабочее название Green) ручное управление памятью.

ЗЫ. Спасиба за ссылки, но с этими стандартами я знаком.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 3:09 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
С# можно и в машинный код компилять, нет проблем. Просто реализовывать готовый язык, сейчас для проекта полезнее чем придумывать что-то самому, подумай : люди увидят в описании C# - подумают почему бы и не попробывать, а увидят Green - подумают "опять какой то самопал" и 90% даже вникать не станит что там. Кроме того если готового кода пока нет (или он находится на этапе разработок), а твой Green как ты сам говориш похож на Java/C# от чего сразу не смотреть в сторону C#. Сам я не сторонник объектно-ориентирыванных языков, но C# как-никак отраслевой стандарт и привлечь людёй к нему проще.


Последний раз редактировалось Ghost Вт фев 27, 2007 7:17 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 6:59 pm 
Лутше тогда реализовывать Java, ибо коммунити, я думаю больше. Ктомуже, не получится полноценная Java. Ну вот допустим консоль юзать нельзя.
Также я не очень знаком с опкодами X86(Вот для ARM пожалуйста :) ) для генерации кода под JIT. Да и ктомуже пока серьёзно Kolibri не юзал. Я ведь как планировал сделать. Я хотел сначала написать на C# Green, а потом догфудом его под колибри скомпилить.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 28, 2007 7:07 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
А почему консоль нельзя использовать? Она же есть...


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 01, 2007 9:13 am 
Она есть, но как я понял она может убратся\переписатся. Если делать консоль, то специальную для этой VM.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 10, 2007 10:33 pm 
После долгих раздумий, и мучений по созданию прототипа виртуальной машины, я решил:
Делать транслятор(конвертор) из Java .class файлов(или целых .jar) в .asm .

Компиляция будет проходить под мастдаем, и то под платформой .NET(Ибо RAD, другое баюсь не асилю).
Вот результаты роботы моего компилятора:

Код:
package japp;

public class Main {
   
    private int i;
   
    public Main() {
       
    }

    public static void main(String[] args) {
        int a = 0;
        int b = 1;
       
        int c = a / b;
    }
}


Вот ява (Jasmin) асм сурц:

Код:
; Segment type: Pure code
  .method public static main([Ljava/lang/String;)V
  .limit stack 2
  .limit locals 4
met002_begin:
  .line 29
    iconst_0
    istore_1 ; met002_slot001
  .line 30

met002_2:                                     
    iconst_1
    istore_2 ; met002_slot002
  .line 32

met002_4:                                     
    iload_1 ; met002_slot001
    iload_2 ; met002_slot002
    idiv
    istore_3 ; met002_slot003
  .line 33

met002_8:                                     
    return
met002_end:                                   

;met002_slot001                               
    .var 1 is a I from met002_2 to met002_end
;met002_slot002                               
    .var 2 is b I from met002_4 to met002_end
;met002_slot003                               
    .var 3 is c I from met002_8 to met002_end
  .end method


Вот конечный вариант:

Код:
enter    16,0
; iconst 0
push     dword 0
; iconst 1
push     dword 1
; iload 1
mov      eax, 1
add      eax, ebp
push     [eax]
; iload 2
mov      eax, 2
add      eax, ebp
push     [eax]
; idiv
pop      eax
pop      ebx
div      ebx
leave


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 10, 2007 10:34 pm 
Понимаю, код не оптимизирован, но это лутше чем виртуальная машина :)


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 11, 2007 10:53 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 4:16 pm
Сообщения: 426
Нет, не лучше. Лучше чем ничего, но не лучше отдельных VM. Виртуальные машины вполне даже оптимизируют код.
Вообще полезная работа, желаю удачи.

..bw


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 11, 2007 11:55 am 
Не в сети

Зарегистрирован: Чт янв 25, 2007 4:45 pm
Сообщения: 135
Что-то не сильно улавливаю практическую ценность...
Вот если бы потом на этом языке написать компилятор этого же языка для Колибри, то было действительно круто!


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 11, 2007 12:41 pm 
bw
VM не оптимизирует код(В отличии от JIT компиляторов, которые просто ис кода делают канфетку :) (ЗЫ. Jit это например .NET, или Java HotSpot) ).

Serial
Ну смотри:
Дело в том что я немогу писать на С++ или C дажа под Win(Негаваря уже о Колибри), ну не признаю я этот язык. В нём обсолютно нет логики. Мне просто с ним не приятно работать. А вот на обсолютно вылизанных Java и C# самое то. Но вот в чем проблема - их коды(IL и Java Byte-Code) не могут быть исполнены под KolibriOS.
Чтобо можно было исполнять на колибри их код, нада написать рантайм на С или С++(Причем такой салидный рантайм, ассобина для IL).
Так что я выбрал писать компилятор на C# под мастдай. Патом я напишу на яве этот компилятор и переведу его на KolibriOS.

Пачему я не пишу компайлер сразу на яве? Дело втом что мой компайлер имеет очень большие ограничения.
Но это пока, потом я буду писать виртуальную машину.

ЗЫ. Скоро уеду на неделю.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 11, 2007 12:47 pm 
Забыл сказать:
Мой компилятор пропускает процесс верификации кода.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 11, 2007 8:26 pm 
Не в сети

Зарегистрирован: Чт янв 25, 2007 4:45 pm
Сообщения: 135
Knott писал(а):
bw
Пачему я не пишу компайлер сразу на яве? Дело втом что мой компайлер имеет очень большие ограничения.
Но это пока, потом я буду писать виртуальную машину.


Хм.. А виртуальная машина зачем нужна (и для какой ОС)?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 13, 2007 12:33 pm 
Виртуальная машина языка явы для Колибри. Ессе палучится то с JIT.


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

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


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

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


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

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