Professional Documents
Culture Documents
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Sadržaj
Sadržaj ........................................................................................................................................ 2
Uvod ........................................................................................................................................... 3
1. Sat vježbi u praktikumu ...................................................................................................... 4
2. Sat vježbi u praktikumu ...................................................................................................... 9
3. Sat vježbi u praktikumu .................................................................................................... 10
4. Sat vježbi u praktikumu .................................................................................................... 11
5. Sat vježbi u praktikumu .................................................................................................... 13
6. Sat vježbi u praktikumu .................................................................................................... 15
7. Sat vježbi u praktikumu .................................................................................................... 17
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Uvod
Simulator ArmSim je simulator RISC procesora ARM (Advanced RISC Machine).
ArmSim omogućava pokretanje programa za procesor ARM na osobnom računalu.
Može se skinuti na stranicama predmeta ili sa stranice:
https://webhome.cs.uvic.ca/~nigelh/ARMSim-V2.1/index.html
Ove upute su napravljene za prvih šest sati vježbi iz asemblera. Sedmi i osmi sat vježbi je
predviđen za ponavljanje i vježbanje za test. Deveti i deseti sat je predviđen za test iz asemblera.
Veći dio testa iz zbirnog jezika odnosi se na prepoznavanje mnemonika i značenja instrukcija
u zbirnom jeziku. Studenti trebaju znati funkciju pojedine asemblerske instrukcije te predvidjeti
rezultat izvođenja nekoliko povezanih instrukcija. Manji dio testa iz zbirnog jezika odnosi se
na dopisivanje instrukcije u zbirnom jeziku u svrhu ostvarivanja određene funkcionalnosti.
Studenti ne trebaju učiti instrukcije napamet i bit će im dostupni svi primjeri i kompletna
dokumentacija. Test će biti vremenski ograničen. Zadaci za vježbu bit će objavljeni na
stranicama predmeta.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Pokrenite izvršnu datoteku ARMSim.exe. Otvara se prozor kao što je prikazano na slici 1.
U izborniku File izaberite Load i odaberite datoteku Primjer 1. Prve instrukcije.s. Sadržaj
datoteke se otvara u prozoru CodeView. Izvršite program odabirom Run u izborniku Debug.
Dobit ćete rezultat kao što je prikazano na slici 2.
VAŽNO:
Ako ne vidite rezultat 20 u donjem prozoru tada trebate u izborniku File->Preferences odabrati
karticu Plugins i označite LegacySWIInstructions kao što je prikazano na slici 5. I uvijek kada
koristite stdout za ispis provjerite da li je navedeni plugin uključen.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
U središnjem dijelu prozora (CodeView) nalazi se učitani program iz datoteke. Prva kolona
označava adrese memorijskih lokacija na kojima se nalazi sadržaj programa u radnoj memoriji.
Druga kolona označava sadržaj memorijskih lokacija tj. strojni kod programa zapisan u radnoj
memoriji. Treća kolona sadržava mnemonike strojnog jezika.
U simulatoru se program ne može mijenjati i za promjenu je potrebno koristiti neki drugi editor
npr. Notepad ili Notepad++. Kad je program promijenjen u vanjskom editoru i promjene su
snimljene na čvrsti disk, moguće je učitati izmijenjenu verziju programa pritiskom na ikonu
Reload .
U lijevom dijelu simulatora se nalaze pogledi na sadržaje registara. Procesor ARM ima 16
cjelobrojnih 32-bitni registara opće namjene. Registar R15 ima funkciju programskog brojila.
Možete birati između tri reprezentacije vrijednosti sadržaja u registrima: heksadecimalnu,
nepredznačni dekadski brojevi i predznačni dekadski brojevi kao što je prikazano na slici 3.
U donjem dijelu prozora imate pogled na vrijednosti zastavica u procesoru: Negative(N),
Zero(Z), Carry(C) i Overflov (V).
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
U izborniku View izaberite Memory i otvorit će vam se novi prozor s pogledom na sadržaj
radne memorije. Unesite adresu 00001000 i pritisnite Enter. Otvorit će vam se dio memorije
gdje se nalazi učitani program kao što je prikazano na slici 4. Možete provjeriti u prozoru
CodeView da se radi o istim podacima.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Za izvršavanje izaberite Step Into iz izbornika Debug ili pritisnite F11 ili kliknite na
ikonu .
Za zaustavljanje izvršavanja programa odaberite Stop u izborniku Debug ili kliknite na ikonu
.
Za ponovno izvršavanje programa odaberite Restart u izborniku Debug ili kliknite na ikonu
.
Zadaci za studente:
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Ishod učenja:
Prepoznati osnovne instrukcije za premještanje podataka u zbirnom jeziku.
Primijeniti osnovne instrukcije za premještanje podataka u svrhu modificiranja
postojećih programa.
Učitajte „Primjer 2. Pregled nekih načina naslovljavanja.s“ u simulator. Primjer koristi tri
strojne instrukcije:
MOV - Instrukcija MOV kopira vrijednost „Operand2“ u registar „Rd“ : MOV Rd,
Operand2
LDR i STR – učitavaju i spremaju vrijednosti u registar.
Zadaci za studente:
Studenti neka probaju samostalno riješiti ovaj zadatak i zatim usporediti rješenje s
rješenjem ponuđenim u datoteci „Primjer 3. Rješenje druge vježbe.s“.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Ishod učenja:
Prepoznati aritmetičke i logičke instrukcije u zbirnom jeziku.
Primijeniti aritmetičke i logičke instrukcije u svrhu modificiranja postojećih programa.
Zadaci za studente:
Učitajte primjer u simulator i pokrenite ga u modu Step Into. Potražite promjene
sadržaja u skupu registara. Mijenjajte prezentaciju vrijednosti registara iz
„Hexadecimal“ u „Signed Decimal“ i obrnuto.
Napišite novi program koji će:
Izračunati funkciju a=b+c*d-e, pri čemu je b=10, c=2, d=3 i e=12
Spremite 10 u R0, 2 u R1, 3 u R2 i 12 u R3
Pomnožite sadržaj R1*R2 i rezultat spremite u R4
Dodajte u registra R4 sadržaj registra R0
Oduzmite od sadržaja registra R4 sadržaj registra R3
Studenti neka probaju samostalno riješiti ovaj zadatak i zatim usporediti rješenje s
rješenjem ponuđenim u datoteci „Primjer 4. Rješenje treće vježbe.s“.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Ishod učenja:
Prepoznati instrukcije grananja i poziva potprograma u zbirnom jeziku.
Primijeniti instrukcije grananja i poziva potprograma u svrhu modificiranja postojećih
programa.
BL – (branch and link) granaj i kopiraj adresu sljedeće instrukcije u registar R14 (registar R14
naziva se još i povezni ili link regisar i oznčava se i s „lr“. Instrukcija se koristi za pozivanje
potprograma, npr. BL labela.
BX – (branch and exchage) granaj na adresu koja se nalazi u navedenom registru. Koristi se za
povratak iz potprograma, npr. BX lr (pročitaj adresu u poveznom registru r14 i stavi ju u
programsko brojilo).
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Zadaci za studente:
Izvršite primjere instrukciju po instrukciju i pratite slijed izvršavanja instrukcija.
Proučite dokumentaciju za instrukcije CMP i B.
Napišite novi program koji će:
a. Upisati vrijednosti cijelih brojeva u registre r1 i r2
b. Pozvati potprogram pod nazivom usporedi
c. Ako je sadržaj registra r1 manji od sadržaja registra r2 potprogram treba u
registar r0 upisati -1
d. Ako je sadržaj registra r1 jednak sadržaju registra r2 potprogram treba u registar
r0 upisati 0
e. Ako je sadržaj registra r1 veći od sadržaja registra r2 potprogram treba u registar
r0 upisati 1
f. Potprogram pozovite tri puta za različite vrijednosti registara r1 i r2
g. Studenti neka probaju samostalno riješiti ovaj zadatak i zatim usporediti rješenje
s rješenjem ponuđenim u datoteci „Primjer 9. Rješenje četvrte vježbe.s“.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Ishod učenja:
Prepoznati ključne riječi za definiranje direktiva u zbirnom jeziku.
Primijeniti direktive u svrhu modificiranja postojećih programa.
Direktive ili pseudonaredbe su upute koje programer daje prevodiocu zbirnog jezika u strojni
kod i služe za ostvarivanje određenih funkcionalnosti. Direktive nisu strojne instrukcije
podržane od strane procesora.
Slijedi značenje nekih od direktiva koje će se koristiti u primjerima. Detaljniju sintaksu možete
pronaći na https://developer.arm.com/documentation/den0042/a/Introduction-to-Assembly-
Language/Introduction-to-the-GNU-Assembler/Assembler-directives?lang=en . Radi se u
GNU-ovim zbirnim pseudonaredbama (engl. GNU assembler directives):
.ALIGN - engl. align -> poravnava adresu koda
.ASCII - engl. ASCII -> postavlja ASCII-jev znakovni niz u kod
.ASCIZ - engl. ASCII zero -> postavlja ASCII-jev znakovni niz završen ništicom na
adresu u kodu
.DATA - engl. data -> određuje da je sljedeći dio koda i za čitanje i za pisanje
.END - engl. end -> određuje završetak koda
.EQU - engl. equal -> određuje makroe
.EXTERN - engl. external -> određuje eksterne labele
.GLOBAL - engl. global -> određuje globalne labele
.SKIP - engl. skip -> alocira dio memorije
.TEXT - engl. text -> određuje da je sljedeći dio koda samo za čitanje
Učitajte „Primjer 10. Direktive.s“ u simulator. U primjeru je prikazano niz direktiva i njihovo
značenje. Izvršite program instrukciju po instrukciju i pratite slijed izvršavanja instrukcija.
Otvorite prozor s pogledom na memoriju i postavite Word Size na 8bit kao na slici 6.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Zadaci za studente:
Izvršite primjere instrukciju po instrukciju i pratite slijed izvršavanja instrukcija.
Napišite novi program koji će:
a. Postaviti tekstualnu konstantu „Asembler je bas zanimljiv“ u kod
b. Rezervirati 30 bajta memorije za spremanje podataka
c. Kopirati tekstualnu konstantu u rezervirani prostor
d. Studenti neka probaju samostalno riješiti ovaj zadatak i zatim usporediti rješenje
s rješenjem ponuđenim u datoteci „Primjer 11. Rješenje pete vježbe.s“.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Ishod učenja:
Prepoznati instrukcije za pozivanje programskih prekida u zbirnom jeziku.
Primijeniti instrukcije za pozivanje programskih prekida za ostvarivanje ulazno-izlazne
komunikacije procesora s vanjskim jedinicama.
VAŽNO:
Provjerite da li je uključen plugin u izborniku File->Preferences. Odaberite karticu Plugins i
označite LegacySWIInstructions kao što je prikazano na slici 7.
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
SWI 0x69 - Piši znakovni niz u datoteku ili na standardni izlaz. U registru R0 treba
biti datotečna ručica ako se piše u datoteku, 1 ako se piše na standardni izlaz. U
registru R1 treba biti dotični ASCII-jev znakovni niz završen ništicom.
SWI 0x6A - Čitaj znakovni niz iz datoteke. U registru R0 treba biti dotična datotečna
ručica. U registru R1 treba biti memorijsko mjesto kamo će se staviti pročitani niz. U
registru R2 treba biti najveća moguća njegova veličina. U registru će R0 poslije biti
broj nepročitanih bajtova.
SWI 0x6B - Piši cijeli broj u datoteku ili na standardni izlaz. U registru R0 treba biti
datotečna ručica ako se piše u datoteku, 1 ako se piše na standardni izlaz. U registru
R1 treba biti dotični cijeli broj.
SWI 0x6C - Čitaj cijeli broj iz datoteke. U registru R0 treba biti dotična datotečna
ručica. U registru će R0 poslije biti pročitani cijeli broj.
Detaljnije o instrukciji SWI i primjere korištenja možete naći na poveznici:
https://www.lri.fr/~de/ARM-Tutorial.pdf .
Učitajte „Primjer 12. Ispis na standardni izlaz.s“ u simulator. Izvršite program instrukciju po
instrukciju i pratite slijed izvršavanja instrukcija.
Učitajte „Primjer 13. Otvaranje datoteke i čitanje iz nje.s“ u simulator. Izvršite program
instrukciju po instrukciju i pratite slijed izvršavanja instrukcija.
Zadaci za studente:
Izvršite primjere instrukciju po instrukciju i pratite slijed izvršavanja instrukcija.
Napišite novi program koji će:
a. Otvoriti datoteku pod nazivom „a.txt“ i pročitati sadržaj u radnu memoriju i
zatim ga ispisati na standardni izlaz.
b. Studenti neka probaju samostalno riješiti ovaj zadatak i zatim usporediti rješenje
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Ishod učenja:
Osmisliti rješenje problema i ostvariti ga u zbirnom jeziku.
Sinteza svih dosadašnjih vježbi.
VAŽNO:
Provjerite da li je uključen plugin u izborniku File->Preferences. Odaberite karticu Plugins i
označite LegacySWIInstructions kao što je prikazano na slici 7.
Zadatak za studente:
FOI
Informacijski i računalni sustavi – Simulator ARM procesora
Ishod učenja:
Upoznati se s načinom polaganja kolokvija i tipovima zadataka
Studenti trebaju riješiti test „Vježba 8 - primjer kolokvija iz asemblera“ dostupan na stranicama
predmeta. Kolokvij će biti podijeljen na dva dijela i vremenski ograničen. U prvom dijelu će
biti pitanja s uparivanjem odgovora i jednostrukim odabirom, a u drugom dijelu će biti zadatak
s dopisivanjem instrukcija.
FOI