Вниз  Пишем компилятор
- 28.05.2016 / 11:24
cap51
  Пользователь

cap51 
Сейчас: Offline
Лаборатория по сборке компиляторов !
Добро пожаловать !

Изменено cap51 (13.01 / 15:41) (всего 1 раз)
- 28.05.2016 / 12:29
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
Ну-ка, рассказывай.
Это будет прям компилятор? Если да, то для какой платформы? x86/x64? MIPS? ARM? AVR? А как именно? В ассемблер какой-то из этих платформ, объектный файл, LLVM IR или сразу в исполняемый код (Intel HEX, например)? А кросс-компиляция будет?
Или будет компиляция в какой-то язык виртуальной машины? Если да, то какой? JVM? Dalvik? ATR? CLR? PVM?
Будет оптизириующий проход?
Или ввобще транспилятор? Типа Java2Basic?
Какой предполагается формат промежуточного представления? AST? Псевдоассемблер? SSA-код?
А какой метод синтаксического разбора выбран? CYK? Эрли? LR(k)? LL(k)? SLR? LALR? Или, простите меня, регулярные выражения?

А язык-то, язык-то какой?
__________________
 don't tread on me

Изменено aRiGaTo (28.05 / 12:37) (всего 2 раза)
- 28.05.2016 / 13:21
Naik
  Пользователь

Naik 
Сейчас: Offline
- 28.05.2016 / 13:22
cap51
  Пользователь

cap51 
Сейчас: Offline
Naik, спасибо.
- 28.05.2016 / 22:54
mcdevil
  Пользователь

mcdevil 
Сейчас: Offline
Народ, я тут пишу яп с динамической типизацией, который генерирует из исходника собственный ассемблер код и компилирует в промеж. байт-код.
Часть ассемблер >> пр. код Готово, и рантайм готов, только осталось написать генератор ассемблер код, как это сделать?

Изменено mcdevil (28.05 / 22:55) (всего 1 раз)
- 29.05.2016 / 17:20
mcdevil
  Пользователь

mcdevil 
Сейчас: Offline
Helltar, вообщем вопрос, как написать парсер для генерации ассемблер-кода?

Изменено mcdevil (29.05 / 17:24) (всего 1 раз)
- 11.06.2016 / 18:43
cap51
  Пользователь

cap51 
Сейчас: Offline
Или такая идея:
Как програмно запустить определенный метод определенного класса ?
Для начала напишем класс, который будем запускать.
Main.java
  1. public class Main
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         int x=0;
  6.         int t=0;
  7.         if (args[0].length() > 0)
  8.         {
  9.             for (int i:new int[args.length])
  10.             {
  11.                 System.out.print((x += Integer.parseInt(args[t])) + " ");
  12.                 t++;
  13.             }
  14.         }
  15.     }
  16. }
Затем класс из которого будем запускать:
Exe.java
  1. public class Exe
  2. {
  3.     public Exe()
  4.     {
  5.         exe();
  6.     }
  7.  
  8.     public void exe()
  9.     {
  10.         try
  11.         {
  12.             String[] param=range(100);
  13.             Class.forName("Main").getMethod("main", String[].class).invoke((Object)param.length, new Object[]{param});
  14.         }
  15.         catch (Exception e)
  16.         {
  17.             e.printStackTrace();
  18.         }
  19.     }
  20.  
  21.     public String[] range(int x)
  22.     {
  23.         String s="";
  24.         int t=0;
  25.         for (int i:new int[x])
  26.         {
  27.             s += t + " ";
  28.             t++;
  29.         }
  30.         return s.split(" ");
  31.     }
  32.  
  33. }
И нажимаем "Выполнить".
Класс Exe передает методу main класса Main в качестве аргумента массив строк, которые генерирует метод range();
- 11.06.2016 / 21:59
cap51
  Пользователь

cap51 
Сейчас: Offline
А вот скриптик который запаковывает все файлы с разширением ".class" из указанной дирректории в jar-архив и помещает этот архив в папку "boot".
  1. public class JarBuilder{
  2. public static void main(String[] args){
  3. FileSearch fs=new FileSearch();
  4. String path="/mnt/sdcard/AppProjects/Compiler/bin/classes2";
  5. String[] files=fs.search(path,".class").split(" ");
  6. String[] ff=new String[files.length];
  7. int i=0;
  8. for(String s:files){
  9. ff[i]=s.substring(path.length()+1);
  10. i++;
  11. }
  12. Pack.pack(path,ff,"/mnt/sdcard/Compiler/boot/asm.jar");
  13. }
  14. }

- 12.06.2016 / 14:59
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
С aapt на Java профит разве что в размере apk. С бинарями под каждую архитектуру слишком много весит.

Одно дело, если б нативный aapt медленно или неправильно работал, а так работает же всё хорошо, зачем трогать? Займитесь чем-нибудь полезным лучше.
__________________
 let live
- 12.06.2016 / 23:19
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
cap51, пока что весь тред похож на труляляканье.. давай кодь нормальное уже что-то, реально полезное
__________________
 わからない!!
Наверх  Всего сообщений: 33
Фильтровать сообщения
Поиск по теме