P1.2 Projektovanje asemblera

Слични документи
P1.3 Projektovanje makroasemblera

P11.3 Analiza zivotnog veka, Graf smetnji

Logicko projektovanje racunarskih sistema I

OPIS RAČUNARSKOG SISTEMA Računarski sistem se sastoji od procesora, operativne memorije, tajmera i terminala. Sve komponente računarskog sistema su me

Precesor Intel 8086

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Algoritmi i arhitekture DSP I

Microsoft Word - Projekat iz MIPS-a - simCPU.doc

RACUNARSKA ELEKTRONIKA – VEŽBE 3

Zbirka resenih zadataka iz arhitekture racunara

Edukacioni racunarski sistem

P1.0 Uvod

Pojačavači

P9.1 Dodela resursa, Bojenje grafa

Funkcije predavač: Nadežda Jakšić

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

AR2019

Logicko projektovanje racunarskih sistema I

PROMENLJIVE, TIPOVI PROMENLJIVIH

Tutoring System for Distance Learning of Java Programming Language

Grananje u programu predavač: Nadežda Jakšić

P11.2 Izbor instrukcija, IBURG

P9.2 Optimizujuci kompajler, prednji deo

Fortran

3.Kontrlne (upravlja~ke) strukture u Javi

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

PowerPoint Presentation

P2.1 Formalne gramatike

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.

Uvod u računarstvo 2+2

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

2_Arhitektura racunara

Microsoft Word - 02 Elementi programskog jezika Pascal

Microsoft Word - 11 Pokazivaci

Računarski softver Da bi računarski sistem mogao da radi, pored hardvera mora biti opremljen i odgovarajućim programima koji će njime upravljati.ova k

Повезивање са интернетом

Vezbe_AOR1_2014_V1.0

Zadatak T=5: Jedinica WBSD propušta vred Potiče iz polja Rwb.LMD Signal Rwb.WRLMD izaziva propuštanje ove vrednosti 2. Vrednost 0000

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

RAČUNARSKI SISTEM Ne postoji jedinstvena definicija pojma računarski sistem. Računarski sistem predstavlja skup mašina i pridruženih metoda (realizova

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

_sheets.dvi

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Uvod u organizaciju i arhitekturu računara 2 1

Slide 1

ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља www.

Uvod u računarstvo 2+2

Microsoft Word - CAD sistemi

ФАКУЛТЕТ ОРГАНИЗАЦИОНИХ НАУКА

Рационални Бројеви Скуп рационалних бројева 1. Из скупа { 3 4, 2, 4, 11, 0, , 1 5, 12 3 } издвој подскуп: а) природних бројева; б) целих броје

Strukture predavač: Nadežda Jakšić

Орт колоквијум

Analiticka geometrija

P11.1 Izbor instrukcija, najveci zalogaj

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Microsoft PowerPoint - 12a PEK EMT VHDL 1 od 4 - Uvod (2011).ppt [Compatibility Mode]

1

PASCAL UVOD 2 II razred gimnazije

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Испит из Основа рачунарске технике OO /2018 ( ) Р е ш е њ е Задатак 5 Асинхрони RS флип флопреализован помоћу НИЛИ кола дат је на след

Microsoft PowerPoint - blog.hr -cjenik srpanj [Compatibility Mode]

Microsoft PowerPoint - X i XI termin - odredjivanje redosleda poslova [Compatibility Mode]

Рачунарска интелигенција

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

LAB PRAKTIKUM OR1 _ETR_

Funkcije predavač: Nadežda Jakšić

Uvod u računarstvo 2+2

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ У ОСНОВНОМ ОБРА

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

Mathcad - MCADMod MCD

Teorija skupova - blog.sake.ba

Tutoring System for Distance Learning of Java Programming Language

Model podataka

Алгебарски изрази 1. Запиши пет произвољних бројевних израза. 2. Израчунај вредност израза: а) : ; б) : (

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Univerzitet u Beogradu Mašinski fakultet Konstrukcija i tehnologija proizvodnje letelica PODEŠAVANJE PROGRAMSKOG PAKETA CATIA V5 Miloš D. Petrašinović

Projektovanje digitalnih sistema

OOP1 - domaci 2 (2004/05)

Математика напредни ниво 1. Посматрај слике, па поред тачног тврђења стави слово Т, а поред нетачног Н. а) A B б) C D в) F E г) G F д) E F ђ) D C 2. О

Skripte2013

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Slide 1

COMARC/A Format

` 1.Врсте меморије На основу начина чувања података делимо их на меморије које привремено чувају податке (док је рачунар укључен) и меморије које трај

Tehnicko crtanje 2010-pitanja

УНИВЕРЗИТЕТ У БЕОГРАДУ МАШИНСКИ ФАКУЛТЕТ Предмет: КОМПЈУТЕРСКА СИМУЛАЦИЈА И ВЕШТАЧКА ИНТЕЛИГЕНЦИЈА Задатак број: Лист/листова: 1/1 Задатак 5.1 Pостоје

Classroom Expectations

УНИВЕРЗИТЕТ У НИШУ ПРИРОДНО-МАТЕМАТИЧКИ ФАКУЛТЕТ Департман за рачунарске науке Писмени део испита из предмета Увод у рачунарство 1. [7 пое

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

1.1. Programiranje i programski jezici Uvod -pojmovi programa i programiranja prisutni su danas na svakom koraku, pogotovo u masovnim medijima

Увод у организацију и архитектуру рачунара 1

Microsoft Word - Plan numeracije preciscen tekst

PowerPoint Presentation

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

kvadratna jednačina - zadaci za vežbanje (Vladimir Marinkov).nb 1 Kvadratna jednačina 1. Rešiti jednačine: a x 2 81 b 2 x 2 50 c 4 x d x 1

Analiticka geometrija

Транскрипт:

ПРОЈЕКТОВАЊЕ АСЕМБЛЕРА Асемблер Модули асемблера 1

Дефинисање новог лингвистичког нивоа превођењем Потребан преводилац алат који преводи програм написан на једном језику (на једном лингвистичком нивоу) у програм написан на неком другом језику (на другом лингвистичком нивоу) 2

Асемблер (асемблерски преводилац) је програм који преводи полазни (илити изворни) програм написан на асемблерском језику у програм на машинском језику PROGRAM NA ASEMBLERSKOM JEZIKU ASEMBLER PROGRAM NA MAŠINSKOM JEZIKU IZVRŠIVI PROGRAM NA MAŠ. JEZIKU REZULTAT Велика сличност полазног и крајњег језика чине асемблер посебном врстом преводиоца 3

Операције и операнди Кључан део језика чине операције (акције) које се могу изразити и операнди над којима се оне могу обавити Главни задатак преводиоца је да операције из полазног језика изрази у операцијама одредишног језика и операнде полазног језика да замени операндима одредишног језика 4

Операције и операнди Операције асемблерског језика (већином) тачно одговарају операцијама машинског језика (и то је основна особина асемблерског језика) Операције машинског језика називамо инструкцијама Обично исто тако називамо и асемблерске операције -> асемблерске инструкције 5

Запис операције и операнда Разни могући начини записа, али три главне групе Префиксни: OPERACIJA op1 op2... Инфиксни: op1 OPERACIJA op2... Постфиксни: op1 op2... OPERACIJA 6

Запис операције и операнда У Ц++-у све неунарне операције прате инфиксну нотацију. Корисник формулисањем функција суштински уводи своје операције и оне су увек у префиксној нотацији Преклапање оператора је посебан случај 7

Формат инструкције и симболички изрази Асемблерски језици већином користе префиксну нотацију Формат асемблерске инструкције: [labela] KOP [operandi] [komentar] Нпр. START MOV AX,0 obrisi AX Операнди су симболички изрази Изрази се састоје од симбола, бројева и оператора, као што су: +, -, * Нпр. 2 * (BEGINX - ENDX) 8

Примери MIPS32: add $t3, $t2, $0 addi $t1, $0, 1+2*3 sub $t2, $t2, $t1 blez $t2, exit nop 9

Примери x86: mov ah, 09h lea dx, msg+2 int 21h mov ax, 4C00h int 21h 10

Примери ЛПРС: inc R0, R0 mov R2, R3 ashl R0, R0 dec R2, R2 NOP 11

Примери Али: Crystal32 DSP i1 = ymem[i0] anyreg (a0,i1) a0&a0 if (a==0) jmp>end_premalloc: ymem[fpt_temp2] = x0 ymem[fpt_temp3] = i1 12

Примери Али: Starkey SNAP AC = cmul4(wc,yc), BC+=AC ## NOP, WC = PXB0(OXB0), NOP, YC = PYB0(OYB0) AC = cmul4(wc,yc), DC+=AC ## NOP, NOP, NOP, YC = *PYB1(OYB1) AC = cmul4(wc,yc), BC+=AC ## NOP, NOP, NOP, NOP B0 = B0 >> EXP ## NOP, NOP 13

... CMP AX, BROJ+1... 14

Модови адресирања Регистарско: директно и индиректно Непосредно: непосредни операнд и апсолутно адресирање Имплицитно и разни други... 15

На пример: 1101 1100 0010 0011 0011 1110 0101... CMP AX, BROJ+1... 16

... BROJ: DB 5,48 MOV AX, CS: BROJ CMP AX, BROJ+1... 17

... MOV AX, CS: BROJ CMP AX, BROJ+1 BROJ: DB 5,48... 18

... MOV AX, CS: BROJ CMP AX, BROJ+1/2*3 BROJ: DB 5,48... 19

BROJ:.EQU 16/4-1... MOV AX, CS: BROJ CMP AX, BROJ+1/2*3... 20

Проблем превођења симболичких израза: Симболички изрази се појављују у асемблерским исказима у пољу операнда. Дефиниција симбола не мора претходити његовој употреби. Према томе асемблер мора бити организован у два пролаза. 21

Први и други пролаз асемблера: Први пролаз: дефиниција вредности симбола који се појављују у програму. Други пролаз: превођење на машинске инструкције и одређивање вредности операнада израчунавањем израза који представљају вредност операнада у инструкцији. 22

ТАБЕЛА КОДА ОПЕРАЦИЈЕ: Уграђена је у асемблер. Има по једну врсту за сваки симболички код операције. Говори о машинској представи инструкције Броју и врсти операнада и слично Такође дефинише и разлику између машинских и псеудо операција. 23

ТАБЕЛА СИМБОЛА: Дефиниција симбола представља процес придруживања симбола броју који представља његову вредност. Први пролаз додељује меморијску локацију свакој инструкцији. ТАБЕЛА СИМБОЛА служи за уписивање симбола и њима придружених вредности. 24

ТАБЕЛА ЛИТЕРАЛА: Литерали: специјална врста симбола који се односе на константе. Први пролаз додељује меморијске локације и свим литералима у програму. ТАБЕЛА ЛИТЕРАЛА садржи адресу и бинарни запис константе која одговара датом литералу. 25

Литерал?! Пример 16-битна архитектура (инструкциона реч, регистар, меморија...) Фиксна инструкциона реч. cmp r2, 5 0111010100100101 cmp r0, 32000 011101010010???? регистар.word 32000 непосредни операнд није литерал литерал неки пут асемблери и од обичних непосредних операнада направе литерал 26

Други пролаз завршава превођење: Сваки израз у пољу операнда дефинише вредност једног од поља инструкције. Симболички код операције се замењује његовим нумеричким кодом. Вредности свих поља се скупљају према формату инструкције која се преводи. 27

Четири основна модула асемблера: Модул за први пролаз, Модул за други пролаз, Модул за израчунавање израза, У I пролазу за обраду EQU, у II пролазу за одређивање вредности операнада Модул за конверзију константи. У I пролазу за обраду литерала, у II пролазу за обраду α: DATA β и литерала 28

Односи између модула асемблера: ASEMBLER PRVI PROLAZ DRUGI PROLAZ IZRAČUNAVANJE IZRAZA KONVERZIJA KONSTANTI 29

Ток информација у првом и другом пролазу: POLAZNI PROGRAM NA ASEMBLERSKOM JEZIKU PRVI PROLAZ TABELA SIMBOLA TABELA LITERALA KOPIJA POLAZNOG PROGRAMA DRUGI PROLAZ IZVEŠTAJ O PREVOĐENJU DATOTEKA PREVEDENOG PROGRAMA OSTALE INFORMACIJE 30

I пролаз асемблера (1/3) Треба да дефинише све симболе Зато додељује меморијске локације за: За сваку машинску инструкцију За сваку константу које генерише псеудо операција α: DATA β За сваки меморијски блок резервисан исказом α: BLOK п За сваку константу Коју генерише литерал 31

I пролаз асемблера (2/3) Сви елементи се смештају у меморију Почев од адресе 0, по редоследу у програму У ту сврху се уводи бројач локација који указује на први недодељен бајт у меморији који се увећава за вредност зависно од исказа Машинска инструкција: за дужину инструкције Псеудо инструкција α: DATA β: за дужину података које генерише израз β Псеудо инструкција α: BLOK p: за дужину блока који се резервише Псеудо инструкција која не генерише излаз, нпр. EQU: за 0 32

I пролаз асемблера (3/3) Дефинисање симбола Унос симбола и бројача локације у табелу симбола Обрада литерала Више литерала може генерисати исту константу Прави се само једна инстанца Литерал се конвертује у бинарну вредност Додатна информација: дужина и ограничења у погледу смештања Простор за литерале се додељује на крају I прол. 33

II пролаз асемблера (1/2) Асемблирање машинских инструкција Одређивање сваког поља инструкције: Код операције из табеле КОП Конверзија и асемблирање константи α: DATA β Мора се урачунати потреба за попуном Заузимање простора за блок α: BLOK β Мора се урачунати потреба за попуном Псеудо операције које не генеришу излаз Већ су обрађене једноставно се игноришу 34

II пролаз асемблера (2/2) Излази: машински код (.obj) и извештај (.lst) Извештај (листинг): Редни број линије и указивач грешке Адреса меморијске локације (релативно од 0) Генерисани машински код и подаци Изворни асемблерски код 35

Пример програма у ЛПРС асемблеру.data a: 5 b: 7.text Begin: // program racuna a * b sub R0, R0, R0 // R0 <- 0 ld R1, a ld R2, b Loop: add R0, R0, R1 dec R2, R2 jmpnz Loop and R0, R0, R0 // NOP 36

Једноставан пример (1/2) Како се асемблира овај једноставан програм? Табела КОП је наравно позната унапред TITLE PRVI BROJ DB 5,48 MOV AX, CS: BROJ CMP AX, BROJ+1 JNE DVA DVA HLT END TKOP MNEMONIK KOD MOV... 2E A1 CMP... 2E 3B 06 JNE... 75 HLT F4 37

Једноставан пример (2/2) TITLE PRVI BROJ DB 5,48 MOV AX, CS: BROJ CMP AX, BROJ+1 JNE DVA DVA HLT END MAŠINSKI PROGRAM T S LOKACIJA SADRŽAJ SIMBOL VREDNOST 0000 05 BROJ 0000 0001 30 DVA 000D 0002 2E 0003 A1 0004 00 0005 00 0006 2E 0007 3B 0008 06 TKOP 0009 01 MNEMONIK KOD 000A 00 MOV... 2E A1 000B 75 CMP... 2E 3B 06 000C 00 JNE... 75 000D F4 HLT F4 38

Пример BubleSort (1/3) 1 DOSEG 2 0000.MODEL SMALL 3 0000.CODE 4 PUBLIC _BubbleSort 5 0000 _BubbleSort PROC 6 0000 55 push bp 7 0001 8B EC mov bp, sp 8 0003 56 push si ;sačuvaj registre 9 ; i promenljive 39

Пример BubleSort (2/3) 10 0004 53 push bx 11 0005 33 DB xor bx, bx 12 0007 51 push cx 13 0008 33 C9 xor cx, cx 14 000A 52 push dx 15 000B 50 push ax 16 000C 33 C0 xor ax, ax 17 18 000E 8B 76 04 mov si, [bp+4] ; si pokazuje na niz 19 0011 4E dec si 40

Пример BubleSort (3/3) 20 0012 8B 56 06 mov dx, [bp+6] ; broj znakova u dx 21 0015 8A F2 mov dh, dl 22 0017 FE CA dec dl 23 0019 B1 00 mov cl, 0 ; i=0 24 25 001B FirstLoop: 26 001B FE C1 inc cl ; i=i+1 27 001D 8A E9 mov ch, cl ; j=i 28 001F SecondLoop: 29 001F FE C5 inc ch ; j=j+1 41