Показать сообщение отдельно
Старый 23.09.2008, 19:16   #23
satan
Нуждающийся
 
Регистрация: 10.02.2007
Сообщений: 99
Написано 18 полезных сообщений
(для 28 пользователей)
Re: создание MIDletPascal compiler'a

Пора видать мне на форуме отписать все что я о пиндосах думаю... Но ет лирика

Короче дуем для начала на http://www.febooti.com/products/file...rs/hex-editor/ там много всего вкусного, но нам нужен HEX editor (он прям в свойства прописывается и данные копируюца в текстовом формате)

Итак чо я посмотрел и проверил... Значицо для начала компильнул класс типа

class HelloWorld{
public static void main(String [] args){
System.out.println("Hello World!");
}
}

с помощью jikes.exe и получил байткод

CA FE BA BE 00 00 00 30 00 1D
01 00 0A 48 65 6C 6C 6F 57 6F
72 6C 64 07 00 01 01 00 10 6A
61 76 61 2F 6C 61 6E 67 2F 4F
62 6A 65 63 74 07 00 03 01 00
04 6D 61 69 6E 01 00 16 28 5B
...................................

весь не привожу сами увидите, ну что открываем спецификацию и пробуем разобраться

ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
...........................

Разбиваем наш БК как я понял u2..u4 это кол-во байт, и согласно этому получаем

CA FE BA BE // MAGIC - магическое число u4(4 байта)
00 00 // Minor version - младшая версия Java
u2(2 байта)
00 30 // Major version - старшая версия Java
u2(2 байта)
00 1D //
Constant_pool_count u2(2байта)
....................................

Так вот ребята, у кого старшая версия компилера (4.5) проверте мое предположение насчот u1..u2..u4 типов, если я прав, то тогда попробую расписать полностью формат CLASS файла по смещениям, потом попробуем в ручную создать, прям в байт-коде простенькое приложение, и если получица, будем хренарить уже компилер...

ЗЫ...
Магическое число прикольное - Кафе бабе, прям как у нас Кабак и Бабы :D

Последний раз редактировалось satan, 23.09.2008 в 19:37.
(Offline)
 
Ответить с цитированием