MIPS asembler - GASERI


MIPS asemblerski jezik se jednostavno odnosi na asemblerski jezik MIPS procesora. Pojam MIPS akronim je za Microprocessor without Interlocked Pipeline Stages. To je arhitektura smanjenog skupa instrukcija, RISC (engl. Reduced instruction se...



Onion Details



Page Clicks: 0

First Seen: 03/15/2024

Last Indexed: 09/18/2024

Domain Index Total: 397



Onion Content



MIPS asembler - MIPS asemblerski jezik se jednostavno odnosi na asemblerski jezik MIPS procesora. Pojam MIPS akronim je za Microprocessor without Interlocked Pipeline Stages . To je arhitektura smanjenog skupa instrukcija, RISC (engl. Reduced instruction set computer ) koju je razvila organizacija pod nazivom MIPS Technologies . Važno je poznavanje MIPS jezika jer se mnoga ugrađena sklopovlja i softveri izvode na MIPS procesoru. Poznavanje ovog jezika omogućuje bolje razumijevanje rada ovih sustava na niskoj razini. Pored toga, MIPS se često koristi u akademskom okruženju kako bi se studentima omogućilo razumijevanje koncepta niskorazinske programske izvedbe. Korištenje simulatora u tu svrhu omogućava praktičnu primjenu znanja i testiranje različitih programa napisanih u asemblerskom jeziku MIPS. Prije početka izrade koda u MIPS jeziku, važno je nabaviti dobro integrirano razvojno okruženje koje olakšava kompajliranje i izvršavanje koda. Preporučuje se korištenje softvera MARS (engl. MIPS Assembler i Runtime Simulator ). U nastavku se fokusiramo na primjenu asemblerskog jezika MIPS i upotrebu simulacijskog programa MARS za istraživanje načina pokretanja i izvođenja programa napisanih u MIPS asembleru. Uspostava razvojnog okruženja - MARS simulator je softver koji simulira izvođenje programa napisanih u programskom jeziku MIPS. Omogućuje izradu i testiranje programa te sadrži program za ispravljanje pogrešaka (engl. Debugger ) koji omogućuje korisnicima da detaljno prate izvođenje programa, otklanjaju greške i optimiziraju izvedbu. U nastavku ćemo dati upute za njegovu instalaciju i pojasniti njegovo korištenje. Instalacija i konfiguracija softvera MARS - Na stranici MARS download preuzmite simulator klikom na gumb Download MARS i pričekaje dok se program instalira. MARS zahtijeva Java SDK instaliran na vašem računalu. Na istoj stranici kliknite na gumb Download Java koja će vas preusmjeriti na službenu stranicu Oracle , gdje ćete izabrati operacijski sustav koji koristite (Linux, macOS i Windows) i preuzeti najnovije izdanje Jave. Nakon preuzimanja instalacijske datoteke, pronađite je u mapama preuzimanja na vašem računalu i pokrenite je. Zatim slijedite upute za instalaciju Java softvera kako biste dovršili proces instalacije. Rad u simulatoru MARS - Kada ste uspješno dovršili instalaciju, pokrenite simulator MARS klikom na datoteku Mars.jar . Simulator MARS ima intuitivno sučelje koje se sastoji od nekoliko dijelova. Na desnoj strani se nalazi prozor s registrima, gdje su vidljive vrijednosti svih registara, uključujući registre opće i posebne namjene. Procesor tijekom izvođenja programa uzima podatke i instrukcije iz radne memorije te obrađuje podatke pomoću instrukcija. Registri u procesoru omogućuju brz pristup podacima koji se obrađuju, a obrađeni podaci mogu se pohraniti u segment podataka u memoriju ili ostati u registrima procesora za daljnju obradu. Kada započnete novi program ( Ctrl + N ), u središtu se nalazi prazan prozor Edit za uređivanje koda korisnika. U kartici Execute , pokraj prozora Edit , smještena je kontrola izvođenja programa koja je omogućena tek nakon uspješnog pokretanja programa. U njoj se nalazi podjela radne memorije na Text Segment i Data Segment . Text Segment sadrži instrukcije, adrese i kod u binarnom i asemblerskom obliku, stoga ga često nazivamo i segment koda programa . Data Segment je mjesto gdje se mogu vidjeti korisnički podaci, poput stogova pa ga nazivamo segmentom podataka . Na dnu prozora se nalaze MARS Messages , gdje se prikazuju poruke i greške koje su se pojavile tijekom pokretanja programa, te Run I/O sučelje konzole, gdje se mogu pratiti ulazi i izlazi programa. Uz ove dijelove, postoji i traka izbornika na vrhu prozora koja omogućava pristup raznim funkcijama i opcijama te ikonica upitnika za pomoć (engl. Help ) koja prikazuje sve moguće instrukcije za MIPS asembler. Izrada novog programa - Novi program možete izraditi odabirom File u traci izbornika koja će otvoriti padajući izbornik. Zatim izaberite New File kako biste stvorili prazni uređivački prozor u kojem možete pisati i uređivati MARS program. Alternativno, možete stvoriti novu datoteku klikom na ikonu bijelog kvadratića (engl. Create a new file for editing ) smještenu odmah ispod trake izbornika ili najjednostavnije, koristiti kombinaciju tipki Ctrl + N . Spremanje programa - Prije pokretanja programa koji ste napisali, važno ga je prvo spremiti. Da biste to učinili, prvo kliknite na izbornik File , a zatim odaberite opciju Save ili Save as ... . Također se možete koristiti kombinacijom tipki Ctrl + S za brzi pristup opciji spremanja. Važno je napomenuti da je uobičajeni nastavak datoteke za asemblerski jezik .s ili .asm pa je preporučljivo koristiti jedan od tih nastavaka za spremanje vašeg programa. Pokretanje programa - Kada je program spremljen, možete ga pokrenuti klikom na opciju Run u gornjoj traci. Otvorit će se padajući izbornik, gdje ćete odabrati Assembly , a zatim kliknuti na Go u istom izborniku. Alternativno možete kliknuti na ikonicu dvaju ključića (engl. Assemble the current file and clear breakpoints ) ispod trake izbornika i pričekati da se uvjerite kako vaš program nema grešaka. Potom kliknite na ikonicu desno od nje (engl. Run the current program ) za pokretanje programa. Ukoliko je sve u redu u izlaznom prozoru na dnu ekrana će se prikazati izlaz programa. Ukoliko želite otvoriti već postojeći asembler program spremljenog na vašem računalu, jednostavno odaberite opciju Open u izborniku File na izbornoj traci, a zatim odaberite program koji želite otvoriti. Zatvaranje programa - Kada ste završili s programom i želite započeti s pisanjem novog programa, prvo trebate spremiti trenutni program. Zatim u padajućem izborniku pod File odaberite Close ili kombinacijom tipki Ctrl + W zatvorite program. Segment koda programa - Segment koda programa (engl. Text Segment ) prikazuje detalje o asemblerskim instrukcijama programa prikazanih u tablici sa stupcima Bkpt , Address , Code , Basic i Source . Prvi stupac tablice se naziva Bkpt i koristi se za postavljanje točaka prekida (engl. Breakpoint ) u programu. Postavljanjem kvačice na određenu instrukciju, program će se zaustaviti pri izvođenju te instrukcije, omogućavajući nam pregledavanje vrijednosti registara i memorije u tom trenutku. U stupcu Address vidimo adresu u radnoj memoriji gdje je pohranjena svaka pojedina instrukcija programa. U stupcu Source se prikazuju dijelovi instrukcija koje su napisane od strane korisnika, dok stupac Basic prikazuje osnovne instrukcije asemblerskog jezika koje su sastavni dijelovi tih instrukcija. U stupcu Code vidimo strojni izgled instrukcija u heksadecimalnom zapisu. Segment podataka - Segment podataka (engl. Data Segment ) u programu sadrži podatke koje program koristi za obradu. U tablici su prikazane adrese na kojima su ti podaci pohranjeni te sami podaci pohranjeni u obliku bajtova. U prvom stupcu tablice nalazi se adresa na kojoj je pohranjen pojedini podatak, dok se u ostalim stupcima nalaze vrijednosti pohranjenih bajtova, pri čemu se svaki sljedeći bajt nalazi na adresi koja je za četiri veća od prethodne. Svi podaci su prikazani u heksadecimalnom zapisu radi bolje čitljivosti. Praćenje podataka u registrima - Na desnoj strani ekrana vidimo tablicu s registrima i podacima koji su pohranjeni u njima nakon izvođenja programa. U gornjem dijelu ekrana, ispod trake izbornika, nalazi se opcija za podešavanje brzine izvođenja programa u instrukcijama po sekundi. Ako postavimo sporu brzinu izvođenja programa i pokrenemo ga, možemo pratiti promjene u registrima dok se instrukcije izvršavaju jedna po jedna. Trenutna izvršena instrukcija prikazana je žutom bojom u segmentu programa, a zelenom bojom su označene promjene u registrima, što olakšava praćenje izvođenja programa. Također, postoje ikonice za korak nazad (engl. Undo the last step ) i korak naprijed (engl. Run one step at a time ) kako bismo detaljnije mogli pratiti izvođenje programa i vrijednosti u registrima za svaki korak. Struktura MIPS programa - Struktura asemblerskog programa prikazanog ispod, općenito je podijeljena u dva glavna segmenta: data i text segment koje se deklariraju pomoću asemblerskih direktiva .data i .text . Asemblerske direktive su upute koje omogućuju procesoru da pravilno obradi različite dijelove koda. One se obično navode ispred dijelova koda kojima se odnose, a počinju s točkom. Primjerice, .data , .asciiz , .text i .globl su samo neke od često korištenih asemblerskih direktiva. Na početku programa deklariramo segmente. Koristimo .data segment za pohranu podataka za obradu, što u ovom slučaju predstavlja statičke podatke. Podaci se inicijaliziraju na zadane vrijednosti prije izvršavanja programa i pohranjuju se u memoriju. Kada se program izvršava, podaci se mogu čitati i mijenjati prema potrebi. Primjerice, ovaj dio koda može se koristiti za ispisivanje stringa na ekran, u ovom slučaju "Hello World!". Oznaka ili labela labela: označava memorijsku adresu na kojoj se nalazi podatak, u ovom primjeru u segmentu podataka ili označava memorijsku adresu na koju se odnosi određena instrukcija u programskom kodu. Za pohranu znakovnih nizova koristimo asemblerske direktive .ascii ili .asciiz . Ovim se rezervira potreban broj bajtova za spremanje znakovnog niza te ga se postavlja na zadanu vrijednost. Za deklariranje 16-bitnih podataka koristi se direktiva .half . Može se navesti jedan ili više podataka koji se razdvajaju zarezima: .half 3, 10, -25. Za deklariranje cijelih 32-bitnih podataka koristimo direktivnu .word . Deklaracija segmenata programa podrazumijeva direktivu .text u koju se pohranjuju instrukcije, odnosno programski kod. Nakon toga slijedi .global main što označava da je main globalna funkcija, tj. početak programa. Zatim definiramo oznaku main: koja predstavlja početak našeg programa i krećemo s programiranjem. Sistemski pozivi - Sistemski poziv asemblerska je naredba kojom se poziva operacijski sustav (OS) kako bi se izvršila operacija koja nije dostupna unutar programa. Sistemski poziv se poziva naredbom syscall . Kada se ova naredba pozove, program šalje zahtjev operacijskom sustavu koji zatim izvršava zahtjev i vraća rezultat programu. Osnovni sistemski pozivi obuhvaćaju funkcionalnosti kao što su ispisivanje na ekran, učitavanje podataka s tipkovnice, alokacija memorije i slično. U asembleru, syscall se sastoji od spremanja određenog broja u registar $v0 , što predstavlja kôd specifične usluge koja se poziva. Primjerice instrukcija li $v0, 10 sprema kôd 10 u registar $v0 . Nakon toga poziva se instrukcija syscall koja prenosi kontrolu operacijskom sustavu za izlaz iz programa (engl. Exit ). U nastavku je prikaz usluga sistemskih poziva i odgovarajućih kodova za svaku od njih: Registri - Većina nared...