Logicko projektovanje racunarskih sistema I

Слични документи
P1.2 Projektovanje asemblera

P1.3 Projektovanje makroasemblera

Funkcije predavač: Nadežda Jakšić

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

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

P11.3 Analiza zivotnog veka, Graf smetnji

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

PROMENLJIVE, TIPOVI PROMENLJIVIH

RACUNARSKA ELEKTRONIKA – VEŽBE 3

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

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Programiranje za UNIX Okruženje unix procesa

P11.1 Izbor instrukcija, najveci zalogaj

Precesor Intel 8086

Programiranje 1 Milena Vujošević - Janičić 2008/2009

Uvod u organizaciju i arhitekturu računara 2 1

Microsoft Word - 11 Pokazivaci

Edukacioni racunarski sistem

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Uvod u računarstvo 2+2

P9.1 Dodela resursa, Bojenje grafa

Zbirka resenih zadataka iz arhitekture racunara

AR2019

Pojačavači

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

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

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

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

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

Računarski praktikum I - Vježbe 09 - this, static

P2.1 Projektovanje paralelnih algoritama 1

2_Arhitektura racunara

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

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

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

Microsoft PowerPoint - C-4-1

Logicko projektovanje racunarskih sistema I

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

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

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.

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 01 - Uvod

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Algoritmi i arhitekture DSP I

IV Spekulativno I predikatsko izvršavanje

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

Podela ra~unarskih sredtava

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

PowerPoint Presentation

Programski jezik C

Skripte2013

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

P11.2 Izbor instrukcija, IBURG

(Microsoft Word - Rje\232enja zadataka)

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

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.

P1.0 Uvod

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

07_PJISP_II_Predavanja

PowerPoint Presentation

3.Kontrlne (upravlja~ke) strukture u Javi

Fortran

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

(Microsoft Word vje\236ba - LIMES FUNKCIJE.doc)

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Vezbe_AOR1_2014_V1.0

Vektorski procesori Najveći izvor paralelizma su DoAll petlje kako je već definisano u poglavlju o paralelizaciji petlji. Paralelizam tih petlji, ako

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

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

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Slide 1

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

7. predavanje Vladimir Dananić 14. studenoga Vladimir Dananić () 7. predavanje 14. studenoga / 16

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Microsoft PowerPoint - Timer0 16F887.ppt [Compatibility Mode]

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Primenjeno programiranje - vezbe GUI i baze podataka

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

Slide 1

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

Матрична анализа конструкција

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

PowerPoint Presentation

9. : , ( )

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

IV Spekulativno I predikatsko izvršavanje

Tutoring System for Distance Learning of Java Programming Language

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

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Писање и превођење модула

Microsoft Word - predavanje8

OBAVIJEST PZZ KORISNICIMA Poštovani korisnici programskog rješenja Last2000. Za Vas smo pripremili sljedeće novosti u programu: NOVOSTI

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

NIZOVI

Транскрипт:

PRIMERI SA PREDAVANJA 17 Beta asembler Zadatak 1. Posmatrajmo sledeću funkciju napisanu u programskom jeziku C, za računanje najvećeg zajedničkog delioca dva pozitivna cela broja: int gcd(int a, int b) { if (a == b) return a; if (a > b) return gcd(a b, b); return gcd(a, b a); } A. Ručno prevesti C funkciju u Beta asemblerski jezik. Rešenje: PUSH (LP) PUSH (BP) MOVE (SP, BP) LD (BP, -12, R0) LD (BP, -16, R1) CMPEQ (R0, R1, R2) BT (R2, L1) CMPLE (R0, R1, R2) BT (R2, L2) SUB (R0, R1, R2) BR (gcd, LP) DEALLOCATE (2) BR (L1) L2: SUB (R1, R0, R2) PUSH (R0) BR (gcd, LP) DEALLOCATE (2) L1: POP (R2) POP (R1) POP (BP) POP (LP) JMP (LP) 1

B. Šta je prevodilac hteo da postigne instrukcijom LD(BP, -16, R1)? Rešenje: pristup drugom argumentu poziva funkcije, koji je udaljen 16 B od lokacije na koju pokazuje BP u trenutnom okviru (frame). C. Ručno prevesti instrukciju BR(L1) iz asemblerskog jezika u mašinski kod instrukcije. Rešenje: BR(L1) je makro koji se prevodi u BR(L1, R31), što je takođe makro koji se prevodi u BEQ(R31, L1, R31). Mašinki oblik ove instrukcije je: 011100 11111 11111 0000000000000111 jer je instrukcija na koju se skače udaljena 7 lokacija od naredne instrukcije. Ne treba zaboraviti da je PUSH makro koji se sastoji od 2 instrukcije. D. Šta se nalazi u registru R0 u trenutku izvršenja instrukcije sa labelom L1? Rešenje: Prilikom izlaska iz funkcije, u registru R0 se nalazi povratna vrednost funkcije. E. Koliko je zauzeta stack memorija tokom izvršenja sledećeg poziva funkcije: gcd(24, 16)? Rešenje: gcd(24, 16) => gcd(8, 16) => gcd(8, 8) što je bazni slučaj rekurzije. Ukupno se zauzima 3 okvira, od kojih je svaki veličine 6 lokacija. Ukupno zauzeće je stoga 18 lokacija, odn. 18 x 4 = 72 B. Tokom izvršavanja poziva funkcije gcd(28, 70) pojavljuje se sledeći sadržaj stack memorije:??? 0x00000594 0x00001234 0x00000046 0x0000002A 0x0000001C 0x00000594 0x0000124C 0x0000002A <-- BP 0x00001254 <-- SP F. Koja je vrednost drugog argumenta (b) trenutnog poziva funkcije? Rešenje: drugi argument se nalazi na lokaciji 16 B udaljenoj od BP. Vrednost drugog argumenta je 0xE. G. Koja vrednost se nalazi u registru BP? Rešenje: Iznad trenutne lokacije na koju pokazuje BP se nalazi sačuvana stara vrednost BP: 0x124C, što je koordinatni početak prethodnog okvira. Trenutna vrednost BP je stoga 0x124C + 0x18 = 0x1264. Veličina okvira je 6 lokacija, odn. 24 = 0x18 B. 2

H. Šta se nalazi na nepoznatoj lokaciji (???) u stack memoriji? Rešenje: Na nepoznatoj lokaciji se nalazi prvi argument prethodnog poziva. Pošto je prvi poziv bio gcd(28. 70), redosled poziva je: gcd(28, 70) => gcd(28, 42) => gcd(28, 14). Prvi argument prethodnog poziva je 28. I. Na kojoj adresi u memoriji za instrukcije se nalazi instrukcija POP(R2)? Rešenje: Iz trenutnog okvira stack memorije saznajemo povratnu adresu trenutnog poziva, na lokaciji sačuvanog LP. U pitanju je adresa 0x594. Pošto je u prethodnom pozivu drugi argument bio veći od prvog, zaključujemo da je u pitanju povratna adresa koja pokazuje na lokaciju DEALLOCATE (2) koja se nalazi odmah iznad instrukcije sa labelom L1. Stoga je adresa instrukcije sa labelom L1 0x594 + 0x4 = 0x598. J. Šta je značenje vrednosti 0x1254, na lokaciji na koju pokazuje SP, u ovom trenutku? Rešenje: Ova vrednost ne nosi nikakvo značenje jer je na tom mestu stack memorija prazna. Stack memoriju smatramo praznom od lokacije na koju pokazuje SP, pa na dalje. Zadatak 2. Dat je sledeći C program i njegov prevod u Beta asemblerski jezik. int f(int x) { int a = (x & 5); if (x == 0) return 0; else return???; } Prevod u asemblerski jezik: f: PUSH (LP) PUSH (BP) MOVE (SP, BP) ALLOCATE (1) LD (BP, -12, R0) ANDC (R0, 5, R1) ST (R1, 0, BP) xx: yy: BEQ (R0, bye) SUBC (R0, 1, R0) PUSH (R0) BR (f, LP) DEALLOCATE (1) 3

LD (BP, 0, R1) ADD (R1, R0, R0) bye: POP (R1) MOVE (BP, SP) POP (BP) POP (LP) JMP (LP) A. Koji izraz nedostaje u C programu, na mestu upitnika? Rešenje: izraz se otkriva iz analize asemblerskog programa. U pitanju je izraz: a + f(x-1). B. Gde je smeštena lokalna promenljiva a? Rešenje: lokalna promenljiva je smeštena u stack memoriji, na lokaciji na koju pokazuje BP. C. Ručno prevesti instrukciju sa labelom yy u Beta mašinski kod. Rešenje: Makro BR(f, LP) se prevodi u BEQ(R31, f, LP), a ova instrukcija se prevodi u sledeći mašinski oblik: 011100 11100 11111 1111111111110000. Udaljenost instrukcije sa labelom f je -16 lokacija u odnosu na narednu instrukciju od instrukcije skoka. Tokom izvršavanja jednog poziva funkcije, izvršavanje programa je stalo u trenutku kada programski brojač ima vrednost labele xx. U tom trenutku, registar BP ima vrednost 0x174, a stack memorija ima sledeći sadržaj: 0x00000007 0x00000007 0x0000005C 0x000000D4 0x00000003 0x00000006 0x000000A4 0x0000014C 0x00000004 0x000000A4 0x00000160 <-- BP 0x00000004 D. Koju vrednost ima registar SP? Rešenje: Registar SP pokazuje na prvu slobodnu lokaciju u stack memoriji. Pošto je vrednost registra VP 0x174, a veličina okvira (frame) je 5 lokacija, vrednost registra SP je 0x174 + 0x8 = 0x17C. 4

E. Koju vrednost ima lokalna promenljiva a? Rešenje: Lokalna promenljiva a se nalazi na lokaciji na koju pokazuje registar BP. Vrednost je: 0x5. F. Koja je adresa prvog poziva funkcije u glavnom programu? Rešenje: Povratna adresa prvog poziva je 0x5C, što vidimo u sadržaju stack memorije u pitanju je jedini sačuvani LP od ostalih, pošto je prilikom svih rekurzivnih poziva povratna adresa ista. instrukcija poziva funkcije, odn. skoka na funkciju, se onda nalazi lokaciju iznad, na adresi 0x58. G. Koju vrednost ima programski brojač? Rešenje: Programski brojač ima adresu trenutno izvršavane instrukcije, odn. labele xx. Pošto je povratna adresa rekurzivnog poziva 0xA4, a to je adresa instrukcije DEALLOCATE (1), a labela xx je udaljena 5 instrukcija unazad, vrednost labele xx je: 0xA4 0x14 = 0x90. Adapted material under Creative Commons License. MIT OCW https://ocw.mit.edu/terms/ 5