Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / doc92 / курсовик.doc
Скачиваний:
39
Добавлен:
03.08.2013
Размер:
360.45 Кб
Скачать

6 Описание программы

6.1 Назначение программы

Транслятор предназначен для преобразования исходной программы написанной на языке Assembler в объектный код. Так же формируется файл-листнг с подробной информацией о коде.

6.2 Требования к программному и техническому обеспечению Программа разработана на языке Java.

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

6.3 Структура программы

Программа представлена 4-мя классами:

- ASM – для загрузки исходного текста, считывания очередной строки и запуска обработки;

- Tables – содержит все таблицы, используемые в программе и описанные в пункте 4 данной курсовой работы;

- SourceLine – содержит методы для проверки синтаксиса, формирования ТСИ, вычислений длины кода, адреса переменных, проверки данных;

- SourceCode - содержит методы перевода команд в машинный код, формирования карт и листинга.

6.4 Используемые переменные

Поля:

  • Fields – массив разделенных полей из исходной строки( String[] );

  • Label – метка( String );

  • Mnem – мнемокод( String );

  • Directive – директива( String );

  • Link - ссылка( String );

  • Var - переменная( String );

  • Data – массив данных для DW\DB( String[] );

  • isCommand – является ли командой( boolean );

  • address – СЧАК( int );

  • opType – тип операндов( String );

  • wBitR1 – бит w первого операнда( int );

  • wBitR2 – бит w второго операнда( int );

  • wBitRN – бит w непосредственного операнда( int );

  • hasError – содержит ли ошибки( boolean );

  • SC – ссылка на объект класса SourceCode;

  • codeLength – длинна кода( int );

  • memOff - смещение в адресе( int );

  • hasSegment – была ли директива SEGMENT( boolean );

  • SCLength - длинна всего кода( int );

  • segmentName – имя сегмента( String );

- offset – смещение( int );

- line – текущая строка( String );

- newAddress – новое значение СЧАК( int );

- lineNumber – номер строки( int );

- start – точка входа( String );

- code – таблица кода( LinkedList );

- TSI – ТСИ( LinkedList );

- TFK – таблица форматов команд( String[][] );

- TR – таблица регистров( String[][] );

- TA – таблица адресации ( String[][] );

- errors– таблица ошибок(String[] );

6.5 Спецификация методов

Класс ASM:

  • void main( String[] args ) – считывание очередной строки из файла и запуск обработки;

Класс SourceLine:

  • void split( String line ) – разделяет исходную строку на поля;

  • void error( int i ) - вывод ошибки;

  • void reset() – сброс полей в начальное состояние;

  • void start() – запуск процесса проверки синтаксиса и формирования ТСИ;

  • void calculateSize() – вычисление размера кода;

  • void addToCode() – добавление в таблицу кода;

  • boolean checkReg( String temp ) – проверка имени регистра;

  • boolean checkMnem( String temp ) – проверка мнемоники;

  • boolean checkLink( String temp ) – проверка ссылки;

  • boolean checkVar( String temp ) – проверка переменной;

  • boolean checkLabel( String temp ) – проверка метки;

  • boolean checkMem( String temp ) – проверка адреса ОП;

  • int getWBitR( String temp ) – проверка бита W регистра;

  • int checkData( String temp ) – проверка данных;

  • void createH() – формирование карты H;

Класс SourceLine:

  • boolean hasInTSI( String temp ) – проверка наличия в ТСИ;

  • addToTSI( String temp, int value ) – добавление в ТСИ;

  • searchTSI( String temp ) – поиск в ТСИ;

  • void addCodeLine( String[] temp, boolean isCommand, boolean hasLabelOrLink, int codeLength ) - добавляет текущую строку кода в таблицу;

  • void startConvert() – запуск процесса формирования кодов;

  • String[] checkOp( String temp ) – перевод адреса в ОП;

  • String getData( String temp, boolean DB ) – перевод данных;

  • String getAdrType( String temp ) – полученик кода типа адресации;

  • void createT( String codeLine ) – формирование карты T;

  • void createE( ) – формирование карты E;

  • void List( int e, String code ) – формирование листинга;

  • void close() – закрытие файлов;

Класс Tables:

  • int searchTR( String temp ) - поиск по таблице регистров;

  • int searchTA( String temp ) - поиск по таблице адресации;

  • int searchTFK( String temp, String opType ) - поиск по таблице форматов;

  • int searchTD( String temp ) - поиск по таблице директив.

Соседние файлы в папке doc92