slide1
Download
Skip this Video
Download Presentation
Ассемблер для MDSP

Loading in 2 Seconds...

play fullscreen
1 / 13

Ассемблер для MDSP - PowerPoint PPT Presentation


  • 149 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Ассемблер для MDSP' - luigi


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
Ассемблер для MDSP

Александр Поташев

ноябрь, 2009 г.

slide2
Цели и задачи

Создание ассемблера для микропроцессора MDSP:

на входе – исходный код на ассемблере

на выходе – образ программной памяти МП

Синтаксис в стиле AT&T

Использование по возможности общего с funcsim исходного кода

slide3
План

Общий алгоритм работы

Лексический анализатор

Семантический анализатор

Структура кода

class Token

class SemanticUnit

class Operand

class TokenAn

class SemanticAn

class Assembler

slide4
Лексический анализатор

(class TokenAn)

label:

brm%r0,(%r1)

ld$100,%r0

label

:

EOS

brm

%r0

,

(

%r1

)

EOS

ld

100

,

%r0

EOS

jmp label

Tokens

slide5
Семантический анализатор

(class SemanticAn)

label:

label

:

EOS

brm

%r0

,

(

%r1

)

EOS

brm

%r0

m(%r1)

ld

100

,

%r0

EOS

ld

100

%r0

SemanticUnits

class token
classToken

переменные класса

tokenType

std::string sVal

int iVal

type()

str()

integer()

getter

getter

getter

TOKEN_ID

TOKEN_CONST_INT

createId(string id_string)

TOKEN_COLON

TOKEN_COMMA

createConstInt(int iVal)

TOKEN_LBRACKET

createScalar(tokenType)

TOKEN_RBRACKET

TOKEN_EOS

createEos()

методы

значения

class semanticunit
classSemanticUnit

unitType

std::string sVal

vector<Operand *> operands

type()

str()

nOperands()

operator[]

UNIT_LABEL

UNIT_OPERATION

createLabel(string id_string)

createOperation(string opcode, operands)

bool operator== (string str)

Нет привязки к контексту

class operand
classOperand

type

std::string sVal

int iVal

str()

integer()

OPERAND_GPR

OPERAND_CUSTOM_ID

OPERAND_CONST_INT

isConstInt()

createConstInt(int iVal)

createId(string id_string)

createIdInd(string id_string)

indirect

false

isDirectGpr()

%r0

true

isIndirectGpr()

(%r0)

class tokenan
classTokenAn

TokenAn(const char *filename)

char *data

readFileContents(const char *filename)

long filelength

initFileLength(const char *filename)

char *ptr

vector<Token *> run()

skipSpaces()

class semantican
classSemanticAn

vector<Token *> tokens

SemanticAn(vector<Token *> tokens)

vector<Token *>::iterator tok

vector<SemanticUnit *> run()

vector<Operand *> parseOperandList()

Operand *parseOperand()

isOpcode(string s)

class assembler
classAssembler

vector<SemanticUnit *> units

Assembler(vector<SemanticUnit *> units)

map<unsigned int, hostUInt8> run()

ByteLine *encodeOperation(SemanticUnit *op, pc)

int getGprNum(string id)

classOperation

funcsim

set(...)

encode()

slide12
Результаты

Реализованы команды пересылки данных

Для генерации образа памяти используется код funcsim

исходный код

образ памяти

brm%r0, (%r1)

brm(%r0),%r1

brr%r0,%r1

ld$100, %r0

ld$100, (%r0)

24 00 00 01

24 20 00 01

2C 00 00 01

38 00 0C 80

38 00 0C 80

ad