Компилятор ЯВЫ

High-level languages programming questions
  • http://www.ecma-international.org/publi ... ma-335.htm - спецификация .NET Framework
    http://www.ecma-international.org/publi ... ma-334.htm - C# Language Specification
    Если возьмёшся за реализацию будет отлично! Сразу скажу что эти стандарты халявные и не о каких лицензиях/выплатах речи быть не может.

    P.S. На последок совет : занимайся тем что тебе нравится, и не вздумай как некоторые делать вид что они делают одолжение для проекта, мол никто не отвечает - значит никому не надо, и бросать работу. Будут вопросы - чем сможим поможим.
    Last edited by Ghost on Tue Feb 27, 2007 2:56 pm, edited 1 time in total.
  • Ты коечего непонял. Дело в том что это не виртулальная машина.(Хотя следуюшия разработка это виртуальная машина).
    Это полностью компилируемый язык. Компилится он в FASM. Сделано специально для Kolibri.

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

    ЗЫ. Спасиба за ссылки, но с этими стандартами я знаком.
  • С# можно и в машинный код компилять, нет проблем. Просто реализовывать готовый язык, сейчас для проекта полезнее чем придумывать что-то самому, подумай : люди увидят в описании C# - подумают почему бы и не попробывать, а увидят Green - подумают "опять какой то самопал" и 90% даже вникать не станит что там. Кроме того если готового кода пока нет (или он находится на этапе разработок), а твой Green как ты сам говориш похож на Java/C# от чего сразу не смотреть в сторону C#. Сам я не сторонник объектно-ориентирыванных языков, но C# как-никак отраслевой стандарт и привлечь людёй к нему проще.
    Last edited by Ghost on Tue Feb 27, 2007 7:17 pm, edited 1 time in total.
  • Лутше тогда реализовывать Java, ибо коммунити, я думаю больше. Ктомуже, не получится полноценная Java. Ну вот допустим консоль юзать нельзя.
    Также я не очень знаком с опкодами X86(Вот для ARM пожалуйста :) ) для генерации кода под JIT. Да и ктомуже пока серьёзно Kolibri не юзал. Я ведь как планировал сделать. Я хотел сначала написать на C# Green, а потом догфудом его под колибри скомпилить.
  • А почему консоль нельзя использовать? Она же есть...
  • Она есть, но как я понял она может убратся\переписатся. Если делать консоль, то специальную для этой VM.
  • После долгих раздумий, и мучений по созданию прототипа виртуальной машины, я решил:
    Делать транслятор(конвертор) из Java .class файлов(или целых .jar) в .asm .

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

    Code: Select all

    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) асм сурц:

    Code: Select all

    ; 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
    
    Вот конечный вариант:

    Code: Select all

    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
    
  • Понимаю, код не оптимизирован, но это лутше чем виртуальная машина :)
  • Нет, не лучше. Лучше чем ничего, но не лучше отдельных VM. Виртуальные машины вполне даже оптимизируют код.
    Вообще полезная работа, желаю удачи.

    ..bw
  • Что-то не сильно улавливаю практическую ценность...
    Вот если бы потом на этом языке написать компилятор этого же языка для Колибри, то было действительно круто!
  • bw
    VM не оптимизирует код(В отличии от JIT компиляторов, которые просто ис кода делают канфетку :) (ЗЫ. Jit это например .NET, или Java HotSpot) ).

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

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

    ЗЫ. Скоро уеду на неделю.
  • Забыл сказать:
    Мой компилятор пропускает процесс верификации кода.
  • Knott wrote:bw
    Пачему я не пишу компайлер сразу на яве? Дело втом что мой компайлер имеет очень большие ограничения.
    Но это пока, потом я буду писать виртуальную машину.
    Хм.. А виртуальная машина зачем нужна (и для какой ОС)?
  • Виртуальная машина языка явы для Колибри. Ессе палучится то с JIT.
  • Who is online

    Users browsing this forum: No registered users and 1 guest