Ассемблер для MDSP Александр Поташев ноябрь, 2009 г.

Презентация:



Advertisements
Похожие презентации
1 Кубенский А.А. Функциональное программирование. Глава 5. Системы исполнения функциональных программ. Глава 5. Системы исполнения функциональных программ.
Advertisements

Язык C++ Лекция 2. Недостатки enumов Засорение namespaceа, в котором находится enum Соответственно, члены enumа должны иметь уникальный префикс.
Лекция 30. Преобразования типов в C++ Красс Александр СПбГУ ИТМО, 2009.
Часть II. Формальное описание языков программирования ( Формальная спецификация формальных языков ) Приложение. Дерево абстрактного синтаксиса языка IMP.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 6 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Date: Filename:SCL_3e.1 SIMATIC S7 Siemens AG All rights reserved. Создание и вызов блоков.
Переменные: тип, имя, значение. Переменная Переменные Переменные в языке программирования Visual Basic используются для хранения и обработки данных в.
Лекция 11. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Разработка языка сценариев для систем виртуальной реальности А.А. Безгодов А.Ю. Тропченко.
Прикладное программирование кафедра прикладной и компьютерной оптики Полиморфизм.
Семантический анализ КC-грамматики, с помощью которых описывают синтаксис языков программирования, не позволяют задавать контекстные условия (КУ), имеющиеся.
Генератор синтаксических анализаторов для решения задач автоматизированного реинжиниринга программ Дипломная работа студента 544 группы Чемоданова Ильи.
Часть II. Формальное описание языков программирования ( Формальная спецификация формальных языков ) Атрибутные грамматики (2). Генерация кода.
1 Кубенский А.А. Функциональное программирование. Глава 2. Средства функционального программирования. Еще один пример функциональной программы
Часть II. Формальное описание языков программирования ( Формальная спецификация формальных языков ) Приложение. Дерево абстрактного синтаксиса языка IMP.
Стадник Е. Г. ФПМИ НГТУ Руководитель: Городничев М.А., м.н.с. ИВМ и МГ СО РАН.
Языки программирования. Алгоритмические (указаны действия, которые надо выполнять) Декларационные (не указано, как выполнять действия; есть исходные данные.
Внутреннее представление компилятора Типы представлений и их особенности.
Лекция 31. Динамическая информация о типе Красс Александр СПбГУ ИТМО, 2009.
Алгоритмы и реализация свертки описаний множеств в индексированные конструкции для системы фрагментированного программирования LuNA Пушкова Е.А., 2к маг.
Транксрипт:

Ассемблер для MDSP Александр Поташев ноябрь, 2009 г.

Цели и задачи Создание ассемблера для микропроцессора MDSP: на входе – исходный код на ассемблере на выходе – образ программной памяти МП Синтаксис в стиле AT&T Использование по возможности общего с funcsim исходного кода

План Общий алгоритм работы Лексический анализатор Семантический анализатор Структура кода class Token class SemanticUnit class Operand class TokenAn class SemanticAn class Assembler

label: brm %r0, (%r1) ld $100, %r0 label:EOS brm jmp label %r 0,( %r 1 ) ld100, %r 0 EOS Token s Лексический анализатор (class TokenAn)

label:EOS brm %r 0,( %r 1 ) ld100, %r 0 EOS label: %r0 m(%r1 ) 100%r0 brm ld SemanticUnits Семантический анализатор (class SemanticAn)

class Token int iValstd::string sValtokenType TOKEN_ID TOKEN_CONST_IN T TOKEN_EOS TOKEN_COMMA TOKEN_LBRACKET TOKEN_RBRACKET TOKEN_COLON createId(string id_string) createConstInt(int iVal) createScalar(tokenType) createEos() type()str()integer() переменные класса метод ы значени я getter

class SemanticUnit std::string sValunitType UNIT_LABEL UNIT_OPERATION createLabel(string id_string) createOperation(string opcode, operands) bool operator== (string str) type()str() Нет привязки к контексту vector operands nOperands( ) operator[]

class Operand type OPERAND_GPR OPERAND_CONST_IN T isDirectGpr() OPERAND_CUSTOM_I D createConstInt(int iVal) std::string sValint iVal str()integer() createId(string id_string) createIdInd(string id_string) isIndirectGpr() isConstInt() indirect false true %r0 (%r0)

class TokenAn skipSpaces() long filelength char *data char *ptr TokenAn(const char *filename) readFileContents(const char *filename) initFileLength(const char *filename) vector run()

class SemanticAn Operand *parseOperand() vector tokens vector ::iterator tok SemanticAn(vector tokens) isOpcode(string s) vector run() vector parseOperandList()

class Assembler int getGprNum(string id) vector units Assembler(vector units) map run() ByteLine *encodeOperation(SemanticUnit *op, pc) class Operation funcsi m set(...) encode()

Результаты C C 80 brm %r0, (%r1) brm (%r0), %r1 brr %r0, %r1 ld $100, %r0 ld $100, (%r0) исходный кодобраз памяти Реализованы команды пересылки данных Для генерации образа памяти используется код funcsim

Спасибо за внимание!