Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Асемблер для платформи Java

Реферат Асемблер для платформи Java





figures [2] = new Square (3);

double sum = 0;

for (int i = 0; i

sum + = figures [i]. getArea ();

try {

BufferedReader br = new BufferedReader (new InputStreamReader (System.in));

double d = Double.parseDouble (br.readLine ());

System.out.println (d + sum),

} catch (IOException exc) {

System.out.println ("Error!"); p> } p> } p>}

// --------------------------------------------- --------------//

В  Проектування і реалізація компілятора.

Для реалізації компілятора був використаний мова програмування Java (JDK версії 1.5). Це дозволяє запускати даний компілятор на будь платформі, для якої існує віртуальна машина Java v 1.5. p> При кожному запуску компілятора обробляється один файл вихідного тексту мовою асемблера для платформи Java. Компілятор приймає два аргументу командного рядки: ім'я файлу вихідного тексту і ім'я створюваного файлу класу (явне вказівку розширення. class обов'язково). У разі, якщо вихідний файл вже існує, він перезаписується без попередження. У разі синтаксичної чи іншої помилки на консоль виводиться відповідне повідомлення.

Можна виділити кілька основних етапів компіляції (проходів):

В· Читання вихідного файлу. При цьому він розбивається на пропозиції, розділені крапками з комами, також викидаються коментарі;

В· Розбір вихідного тексту. При послідовному переборі списку пропозицій виділяються синтаксичні конструкції. При розборі використовується лексичний аналізатор, розділяє пропозиції на лексеми. На підставі виділених синтаксичних конструкцій генерується внутрішнє представлення програми, що має вигляд деревовидної структури даних, коренем якої є представлення класу в Загалом, вузлами першого рівня - об'єкти, відповідні методам, полям, елементам Constant Pool і т. д.;

В· Заміна номерів міток відповідними зміщеннями в коді методів;

В· Генерація байт-коду методів як масивів байт;

В· Генерація фай ла класу на підставі внутрішнього представлення програми.

Дане розподіл є умовним і не означає суворої часовій послідовності. Третій і четвертий етапи, по суті справи, є частинами другого етапу.

Діаграма пакетів проекту зображена на рис. 1. br/>В 

Рис. 1.

Діаграма пакетів


Кореневий пакет проекту має ім'я jasm. Він містить клас MainClass, метод main () якого є точкою входу в програму, і класи SyntaxErrorException і InternalCompilerErrorException, успадковані від java.lang.Exception і представляють помилки, які можуть виникнути в процесі компіляції. Пакет compiler містить класи, відповідальні за розбір вихідного тексту, причому класи, що працюють з кодом методів, містяться у вкладеному пакеті code_compiler. Пакет structures містить класи, з об'єктів яких складається внутрішнє проміжне представлення програми, а також деякі допоміжні класи. Він має три вкладених пакету: commands, consts і attributes, класи з яких описують, відповідно, команди байт-коду, елементи Constant Pool і атрибути полів і методів. У пакет commands у свою чергу вкладені пакет command_formats, що містить базові абстрактні класи для команд типових форматів, пакети, що містять класи, представляють команди кожного з типових форматів, а також пакет special для класів, що представляють команди, мають особливий формат.

Більшість класів з пакету structures входять в ієрархію, коренем якої є інтерфейс IStructure, містить два методи int getLength () і byte [] getContent (), що дозволяють отримати, відповідно, розмір, який займе структура при запису у вихідний файл, і масив байт, якими вона представляється у вихідному файлі. Даний інтерфейс не використовується для поліморфного виклику методів, він грає лише роль структурування програми. Основні класи пакета structures зображені на діаграмі на рис. 2. br/>В 

Рис. 2.

Класи пакета jasm . structures .

Генерований клас як ціле представляється об'єктом класу ClassFile, який містить у своїх полях посилання на об'єкти класів ConstantPool, FiledInfo і MethodInfo, що описують область констант, поля і методи створюваного класу. Сам клас ClassFile інтерфейс IStructure не реалізує. Серед його членів слід зазначити метод writeToFile (), що створює файл класу на підставі інформації, що міститься в об'єкті.

Даний компілятор може створювати атрибути методів Code, Exceptions і атрибут поля ConstantValue, які представляються класами, похідними від AttributeStructure. Зазначу, що об'єкт класу CodeAttribute містить байт-код методу вже у вигляді масиву байт, а не у вигляді об'єктів класів, що представляють окремі команди (Похідних від Command), списки таких об'єктів використовуються лише в процесі обробки коду методу.

Абстрактний клас Command додатково до методів інтерфейсу IStruc...


Назад | сторінка 12 з 14 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Основні класи неорганічних сполук
  • Реферат на тему: Похідні класи в C + +
  • Реферат на тему: Соціальні класи
  • Реферат на тему: Класи і страти
  • Реферат на тему: Класи операційних завдань