Одним томным пятничным вечером взбрела мне в голову безумная идея: а почему бы мне не поразмять мозг, и не написать HelloWorld на ассемблере. Однако это показалось слишком простым. А давайте соберем не x86 программу, а java class? Сказано — сделано.
Первым делом находим спецификацию JVM. Как мы видим, файл класса Java состоит из:
- Магическое число, оно всегда равно 0xCAFEBABE
- Минорная и мажорная версии, для Java 7 они равны 0 и 51 соответственно.
- Количество элементов пула констант и сами элементы — об этом ниже.
- Флаги доступа, номер константы, указывающей на текущий класс, номер константы, указывающей на класс-родитель.
- Количество реализуемых интерфейсов и массив номеров их дескрипторов в пуле.
- Количество полей, массив дескрипторов полей.
- Количество методов, массив дескрипторов методов.
- Количество атрибутов, массив атрибутов.
|