Semestrální práce z předmětu ÚPA MIPS



Podobné dokumenty
Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

ZADÁNÍ Č. 6 ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA APLIKOVANÝCH VĚD KATEDRA INFORMATIKY A VÝPOČETNÍ TECHNIKY

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Základy PERLu snadno a rychle

Strojový kód. Instrukce počítače

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Architektury VLIW M. Skrbek a I. Šimeček

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

- jak udělat konstantu long int: L long velka = 78L;

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

8. Laboratoř: Aritmetika a řídicí struktury programu

VISUAL BASIC. Práce se soubory

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Opakování programování

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Universita Pardubice Fakulta elektrotechniky a informatiky. Mikroprocesorová technika. Semestrální práce

VY_32_INOVACE_08_2_04_PR

Architektura počítačů. Instrukce a návrh instrukční sady. Lubomír Bulej KDSS MFF UK

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Princip funkce počítače

Principy počítačů a operačních systémů

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Program a životní cyklus programu

Programování v jazyce JavaScript

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Assembler - 5.část. poslední změna této stránky: Zpět

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Práce se soubory. Základy programování 2 Tomáš Kühr

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Číselné soustavy. Binární číselná soustava

Struktura a architektura počítačů (BI-SAP) 7

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

PB002 Základy informačních technologií

a operačních systémů

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné učiliště, Dubno Ing.

Stručný návod k programu Octave

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

Úvod do programování. Lekce 1

Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

V 70. letech výzkumy četnosti výskytu instrukcí ukázaly, že programátoři a

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

10 Algoritmizace Příklad 2 Word 2007/ VBA

Textové popisky. Typ dat

NPRG030 Programování I, 2010/11

5 Přehled operátorů, příkazy, přetypování

C# konzole Podíl dvou čísel, podmínka IF

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Digitální teploměr s LCD

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

ALGORITMIZACE A PROGRAMOVÁNÍ

C2115 Praktický úvod do superpočítání

x86 assembler and inline assembler in GCC

Komunikační protokol

Dělení. MI-AAK(Aritmetika a kódy)

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Program "Světla" pro mikropočítač PMI-80

NPRG030 Programování I, 2016/17 1 / :58:13

Základy algoritmizace a programování

Paralelní programování

Telemetrický komunikační protokol JETI

Základy jazyka C. Základy programování 1 Tomáš Kühr

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

ISU Cvičení 7. Marta Čudová

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

Testování prvočíselnosti

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Implementace LL(1) překladů

Makro. PDF vytvořeno zkušební verzí pdffactory Pro

Sada 1 - Základy programování

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Architektura počítačů Logické obvody

LEKCE 6. Operátory. V této lekci najdete:

Architektura počítačů Logické obvody

Transkript:

Semestrální práce z předmětu ÚPA MIPS Jméno a příjmení: Martin Sloup Osobní číslo: A04372 Datum odevzdání: 21. prosince 2006 E-mail: msloup@students.zcu.cz

Zadání Program převede signed integer na jeho reprezentaci v ASCII, např. 0xB2-> 178 Nahrazení pseudoinstrukcí Dále musí být v přiloženém výpisu (listing) programu vyznačeny alespoň tři různé pseudoinstrukce a musí zde být uvedeno, jakými strojovými instrukcemi je překladač nahradil. 1) Pseudoinstrukce move $s0, $ra je nahrazena addu $16, $0, $31 $16 odpovídá $s0, $0 je vždy nula a $31 odpovídá $ra, tedy do $16 se uloží $0+$31 2) Pseudoinstrukce li $v0, 4 je nahrazena ori $2, $0, 4 $2 odpovídá $v0, $0 je vždy nula, tedy do $2 ($v0) se uloží $0 or 4 3) Pseudoinstrukce subu $t2, 1 je nahrazena addiu $10, $10, -1 $10 odpovídá $t2, tedy $10 = $10 + (-1) Datový hazard Kromě toho musí být v programu vyznačeno alespoň jedno místo, kde potenciálně vzniká datový hazard a jedno místo, kde se potenciálně může projevit (resp. kde se projevuje) zpožděné čtení dat z paměti. Potenciální datový hazard nastává v případech, kdy se instrukce pokusí přečíst obsah paměti po instrukci, která do tohoto zdroje zapisuje. Bohužel jsem ve svém kódu nenalezl potenciální datový hazard, ale mohu alespoň ukázat, při jakém případu by nastalo. Např. po prohozeni dvou instrukcí po načítaní ze zásobníku, v mém případě, vzniká tato situace: addi $sp, $sp, 1 Zpožděné čtení dat z paměti: Zpožděné čtení dat z paměti nastane za situace, kdy načítám data z paměti a ihned v další instrukci s těmito daty dále pracuji. Ani tuto situaci jsem v programu nenašel, ale pro ukázku uvedu příklad, kdy to nastane po odstranění pár instrukcí: beqz $t0, PLOOP Výpis programu # (C) 2006 Martin Sloup, A04372 # E-mail: msloup@students.zcu.cz # Vytvoreno v ramci semestralni prace z KIV/UPA # Kod prevadi Signed integer na jeho reprezentaci v ASCII, napr 0xB2 -> "178".data # datovy segment OVSTUP:.asciiz "Zadej cislo: " #vstupni textova hlaska ODPOVED:.asciiz "Cislo v ASCII: " #vystupni textova hlaska.text.globl main # deleni 10, zbytek se ulozi do $v1, quocient do $v0 DELENI: #dvou parametrove div mi nechtelo fungovat, tak se to muselo napsat takhle:

div $v0, $a0, 10 # provedeme deleni deseti, v $v1 je zbytek, v $v0 quocient mul $t0, $v0, 10 sub $v1, $a0, $t0 jr $ra #vratime se zpet do hlavniho programu main: move $s0, $ra #ulozime si navratovou pozici programu # tiskni "Zadej cislo:" li $v0, 4 la $a0, OVSTUP #vstup cisla z klavesnice li $v0, 5 #hodime cislo z vystupu do $t0 move $t0, $v0 #pamatovak na znamenko nastavime na 0 li $t1, 0 #nejprve zjistime znamenko bgezal $t0, BEZZN # if $t0 >= 0 then goto BEZZN #pokud je cislo zaporne, provedeme negaci a pricteni jednicky not $t0, $t0 add $t0, $t0, 1 #ulozime pamatovak na znamenko li $t1, 1 BEZZN: #promenou na cyklus nastavime na 5 li $t2, 5 DALD: #pokud probehl cyklus 5x skocime na PODEL blez $t2, PODEL #provedeme subrutinu deleni, jako parametr vstpuje delenec move $a0, $t0 jal DELENI # deleni #jako vystup vyleza $v0 pro quocient a $v1 jako zbytek #ulozime zbytek do zasobniku addi $sp, $sp, -1 sb $v1, ($sp) #do $t0 nastavime quocient move $t0, $v0 #snizime pocitadlo cyklu subu $t2, 1 # a provedem dalsi cyklus j DALD

PODEL: #vyhodime text odpovedi li $v0, 4 la $a0, ODPOVED # predelani na text # nejprve znamenko, pokud bylo zadane cislo zaporne beqz $t1, BTEXTZN #zobrazime minus li $a0, '-' #odkomentovat, pokud psat carku # # li $a0, ',' # BTEXTZN: #promenou na cyklus nastavime na 5 li $t2, 5 #pamatovak, zda uz bylo nulove cislo nastavime na 0 li $t1, 0 PLOOP: #pokud cyklus probehl 5x skocime na ONULY blez $t2, ONULY #naceteme cislo ze zasobniku addi $sp, $sp, 1 #snizime cislo cyklu subu $t2, 1 #pokud jiz bylo cislo nenulove, skocime na tisk cisla bgtz $t1, TISK #je-li cislo nulove pokracujeme na dalsi beqz $t0, PLOOP #je-li nenulove, nastavime pamatovak, ze se tak stalo li $t1, 1 TISK: #tisk cisla #pricetem k cislu ascii hodnotu znaku nuly add $t0, $t0, '0' #vypiseme na obrazovku move $a0, $t0 #odkomentovat, pokud psat carku #

# li $a0, ',' # #skocime na dalsi cislo j PLOOP ONULY: #nyni osetrime, pokud bylo zadano nulove cislo, to pozname tak, #ze se z haldy nacetla sama nulova cisla bnez $t1, KONEC li $a0, '0' KONEC: #novy radek na konec li $a0, 0x0A #nastavime zpatky $ra move $ra, $s0 jr $ra Vstup a výstup programu Veškeré vstupy a výstupy do programu se provádí prostřednictvím systémových volání. A následně uvádím i výstup kdy se nastaví výpis výstupu znaku z char na integer (okomentováno v kódu): Zadej cislo: 14562 Cislo v ASCII: 14562 Cislo v ASCII: 49,52,53,54,50, Příklad pro záporná čísla: Zadej cislo: -1382 Cislo v ASCII: -1382 Cislo v ASCII: 45,49,51,56,50, Závěr K zapsání zdrojového kódu programu jsem použil freewarový editor PSPad a k odladění a simulaci běhu programu byl použit program PCSpim ve verzi 7.2.1. Úloha jsem vyřešil podle zadání tak, aby program nebyl ovlivněn zpožděním instrukcí load a skoků. Během psaní programu jsem se seznámil s architekturou MIPS, s používáním pseudoinstrukcí a s řešením problémů se zpožděním instrukcí pro load a skoky.