Programa duotai architektūrai asemblerio kalba arba mašinos kodu ================================================================ Parašykite asemblerio, autokodo arba mašininio kodo programą duotam algoritmui pasirinktai architektūrai (architektūra ir algoritmas bus nurodyti atskirai). Paleiskite šią programą emuliatoriuje. Atsakykite į šiuos klausimus ir atlikite šias užduotis: 1. Parašykite ir surinkite arba mašininio kodo programą duotam algoritmui. Jei programa parašyta mašininiu kodu, pateikite programą aštuonetainių arba šešioliktainių skaičių pavidalu su instrukcijų ir operandų mnemonikomis komentaruose. Duomenų sritims ir valdymo perdavimui naudokite simbolines vietos (adreso) žymes. Komentuokite *kiekvieną* kodo eilutę, paaiškindami, ką ši eilutė atlieka, kokia yra jos funkcija visoje programoje. 2. Parašykite įvadinį komentarą, paaiškinantį, ką programa atlieka, koks algoritmas įgyvendintas ir kokie jo įgyvendinimo ypatumai. Aprašykite įvestis ir išvestis, paaiškinkite rezultatus. 3. Paleiskite programą emuliatoriuje. Dokumentuokite visus veiksmus ir komandas reikalingus programai paleisti. Programa turi veikti Vilniaus Universiteto Linux kompiuteriuose, naujausiose LTS Linux Mint, Debian ar Ubuntu sistemose (bent vienoje iš sistemų). 4. Dokumentuokite programos naudojimą, įvesties duomenų išdėstymą, įvesties failų formatus, išvesties failų formatus (emuliatoriaus failams ir programos failams, jei tokie yra). Jei kai kurios įvestys arba išvestys yra binarinės (pvz., magnetiniai juostos, būgno ar HDD turinio failai), aprašykite arba pateikite įrankius jiems peržiūrėti ir duomenims konvertuoti į žmogui suprantamą teksto formatą. Visi įrankiai PRIVALO būti laisva ir/arba atvirojo kodo programinė įranga (F/LOSS). Nuosavybinė programinė įranga ir ja paremti sprendimai *nepriimami*. 5. Parašykite trumpą ataskaitą (README), paaiškindami savo eksperimentus, taip, kad būtų lengva Jūsų skaičiavimus atkartoti. Aprašykite visas būtinas sąlygas (išorinius programų paketus, jų nustatymus), kurios yra būtinos Jūsų programai paleisti. Pateikite pavyzdines komandas, shell skriptus, komandų istorijas ir (arba) ekrano nuotraukas, dokumentuojančias Jūsų skaičiavimus. Įsitikinkite, kad jūsų skaičiavimas gali būti lengvai atkuriamas, pageidautina automatiniu būdu (naudojant trumpą paprastas apvalkalo scenarijus arba Makefile). 6. Įkelkite visus failus į versijų valdymo sistemą (Subversion, Git, Mercurial arba RCS). Pateikdami užduotį pateikite vieną archyvą (atitinkamo formato .zip, .7z, .tgz, .tbz arba .txz failą) su visais eksperimento failais, programos išeities kodu, sukompiliuotu, surinktu, sulinkuotu kodu, emuliatoriaus įvestimis ir išvestimis. Pateikite savo darbinę kopiją *ir*, jei repozitorija neprieinama viešai, pačią repozitoriją (repozitoriją). Saugykla turi būti skirta tik šiai vienai užduočiai. archyvas. Sugrupuokite failus į atitinkamus katalogus (direktorijas), kad juos būtų lengva rasti. Suteikite prasmingus, lengvai atpažįstamus vardus Jūsų failus. Jei dėl techninių priežasčių naudojami specialūs kodai failų vardams (pvz., MD5 eilutės arba UUID), paaiškinkite, kaip ir kokiems tikslams jie naudojami README faile. RAR failai *nepriimami*! 7. Viso darbo metu naudokite versijų valdymą. Įkelkite kaip atskirą reviziją ir paaiškinkite žurnalo pranešimuose (angl. log messages) kiekvieną tyrimo žingsnį. Rašyk prasmingus, tikslius žurnalo įrašus (pilnus sakinius su tinkama formuluote ir skyryba). Jūsų saugykla turi būti prieinama vertinimo metu – ji turi būti vieša kokiame nors internete matomame serveryje (tai gali būti Jūsų privatus serveris, „Gitlab“, „Github“, „Bitbucket“, „SourceForge“ serveriai) arba saugykla turi būti pateikta archyve atskirame kataloge. Paties emuliatoriaus įkelti nereikia, jei jis pasiekiamas atvirai (kaip F/LOSS programinė įranga). Tačiau, jei jis buvo sukompiliuotas ar sukonfigūruotas kokiu nors specialiu būdu, tai turi būti aprašyta. 8. Pateikite „švarią“ darbo kopiją savo projektui: joje neturi būti neįkeltų pakeitimų, „nežinomų“ failų; tai turi būti naujausia kamieno ar „master“ šakos versija, kurioje yra galutinis rezultatas, skirtas vertinimui. 9. Aptarkite savo programos efektyvumą. Koks dydžio/našumo kompromisas buvo panaudotas Jūsų dizainui (t.y. ar galima programą padaryti didesnę, bet greitesnę, arba lėtesnę, bet užimančią mažiau atminties)? Koks yra tikrasis programos vykdymo laikas (visada pateikite tikslų aparatinės įrangos, operacinės sistemos ir emuliatorius su tiksliomis versijomis aprašymą, kai matuojate vykdymo laikus)? Kiek kartų lėtesnė / greitesnė jūsų programa emuliatoriuje šiuolaikiniame kompiuteryje, negu ta pati programa originaliame pasirinktos architektūros kompiuteryje (jei fizinė aparatūra su šia architektūra neprieinama, pateikite teorinį įvertinimą)? 10. Pacituokite *visus* naudotus ir reikalingus šaltinius iš kurių naudojote informaciją šiame darbe. Mažų mažiausia turite pacituoti du šaltinius: architektūros aprašymą ir algoritmo aprašymą. Cituoti reikia naudojant Harvardo stilių (University of Wolverhampton, 2022). Jūsų tekste turi būti pateiktos nuorodos į šaltinius, teksto pabaigoje turi būti šaltinių sąrašas su pilna bibliografija. Tekstas gali būti Jūsų README failas. Galima cituoti Vikipedijos straipsnius (Wikipedia, 2024), jei jie yra kokybiški (dauguma yra), informatyvūs ir reikalingi Jūsų darbui. Jei naudojate ChatGPT ar kitus Didelius kalbos modelius, juos *būtina* pacituoti kaip šaltinius, nurodant viešą URL, panaudojimo datą ir laiką, įrankio versiją ir Jūsų naudotą pradinį klausimą (angl. prompt). Nuorodos: University of Wolverhampton (2022) Harvard referencing (Cite them right): the basics. 2nd edition. URL: https://www.wlv.ac.uk/lib/media/departments/lis/skills/study-guides/LS134-Harvard-Quick-Guide.pdf Wikipedia (2024) Wikipedia. URL: https://en.wikipedia.org/wiki/Wikipedia [accessed 2024-11-04T09:16+02:00, permalink https://en.wikipedia.org/w/index.php?title=Wikipedia&oldid=1254652936]