Курсовая работа: Ассемблер для платформы Java

Содержание.1

Содержание.2

Введение.3

Постановка задачи.4

Формат файла класса.5

Структура файла класса.5

Типы элементов Constant_pool6

Формат структуры field_info. 7

Формат структуры method_info. 7

Формат атрибута Code.8

Работа JVM.. 10

Система команд JVM.12

Синтаксис языка ассемблера для платформы Java (языка JASM).14

Тестовые примеры.18

1.18

2.19

3.20

Проектирование и реализация компилятора.25

Заключение.30

Использованная литература.31


Введение.

Язык программирования Java был разработан в середине 90-х годов на основе языка Oak, предназначавшегося для программирования «прошивок» для различных электронных устройств. Однако, в отличие от своего предшественника, язык Java получил широкое распространение, прежде всего как язык, использовавшийся в программировании для сети Интернет. В настоящее время область применения Java значительно расширилась, и этот язык часто применяется и в обычном прикладном программировании. Это обусловлено такими преимуществами как кроссплатформенность и безопасность, которые обеспечиваются тем, что исходный код на Java компилируется не непосредственно в машинный код, а в, так называемый, байт-код, который интерпретируется виртуальной машиной Java (JVM). Во многих современных реализациях JVM байт-код перед выполнением преобразуется в машинные инструкции, что значительно повышает производительность, приближая ее к производительности программ, написанных на C/C++. Таким образом, Java, в современном состоянии этой технологии, сочетает преимущества интерпретируемых и компилируемых языков программирования.

Спецификация, описывающая JVM, как абстрактную вычислительную машину, предоставлена компанией Sun в открытый доступ. Это позволяет создавать как собственные реализации JVM для различных платформ, так и альтернативные компиляторы, генерирующие байт-код Java, в том числе для языков программирования, отличных от Java. Большинство литературы, посвященной Java, почти не уделяет внимания устройству JVM и описывает лишь сам язык Java. Однако, в ряде случаев, знание особенностей архитектуры бывает весьма полезным. В данной работе я создал учебную программу, которая может помочь в изучении архитектуры JVM – несложный ассемблер для байт-кода Java.

Постановка задачи.

Требуется изучить архитектуру уровня команд платформы Java, формат файла класса Java, и написать компилятор ассемблероподобного языка, позволяющего создавать файлы классов, корректно обрабатываемые реальной JVM. Данный компилятор должен поддерживать все команды байт-кода Java и важнейшие возможности JVM.

Формат файла класса.

Основным форматом исполняемых файлов в архитектуре Java является формат файла класса, описанный в The JavaTM Virtual Machine Specification, изданной компанией Sun. Файл данного формата имеет имя, совпадающее с идентификатором класса (за исключением вложенных классов) и расширение .class.

Структура файла класса.

Файл класса имеет следующую структуру:

ClassFile { }

(здесь и далее u1, u2, u4 – целые числа размером 8, 16 и 32 бит с порядком байтов старший байт по младшему адресу). Рассмотрим последовательно все поля.

· magic – так называемое магическое число, имеющее в шестнадцатеричной записи вид 0xCAFEBABE;

· minor_version, major_version – версия формата файла, по ней определяется совместимость данного файла с конкретной версией JVM;

· constant_pool_count – количество элементов в Constant_pool плюс единица;

--> ЧИТАТЬ ПОЛНОСТЬЮ <--

К-во Просмотров: 401
Бесплатно скачать Курсовая работа: Ассемблер для платформы Java