Giter Club home page Giter Club logo

pwr-ak-lab's Introduction

Laboratorium z Architektury Komputerów

meme

Opis programów

uwaga - programy MOGĄ zawierać błędy! używaj z głową

helloworld

hello world z poziomu assemblera.

assembler-function-inside-c

program używający funkcji napisanej w assemblerze z poziomu języka C (mnożenie integer)

assembler-inside-c

program używający funkcji napisanej w assemblerze z poziomu języka C, wykorzystujący tzw "wstawkę assemblerową" bezpośrednio w kodzie w C (szyfr cezara)

case-matters

program zamieniający małe litery na duże, a duże na małe.

c-inside-assembler

program wykorzystujący funkcję napisaną w C z poziomu assemblera (potęgowanie, podajemy najpierw podstawę, potem wykładnik)

simple-reading

program wypisujący na ekran znaki wpisane przez użytkownika.

lab2

Program zamieniajacy male litery na duze, duze na male, cyfry na ich dopelnienia do 9 (np 1 na 8). Jest w stanie przeczytac dowolnej dlugosci plik. Zawiera skrypt "porownywarka" sluzacy do porownania dwoch plikow binarnych, np pliku wynikowego powstalego z dzialania programu na pliku wsadowym rand1M.in, ktory powinien byc identyczny z plikiem rand1M.out. uzycie: porownywarka

lab3

Program wykonujacy sortowanie babelkowe liczb o dlugosci 96 bitow w systemie "uzupelnien do 2", zadanych za pomoca dowolnego pliku binarnego (bajty tego pliku stanowią zbiór danych). Konwencja Little Endian. Program nie jest do końca poprawny - bug jest możliwy do znalezienia za pomoca skryptu "porownywarka" dla duzych plikow testowych. Bug polega na uzyciu instrukcji działających w systemie NB dla działań na U2.

lab4

zadanie1:

program z poziomu assemblera wykorzystuje funkcje scanf i printf do pobrania i wyswietlenia kolejno: liczby int, znaku i ciagu znakow.

zadanie2-4:

program mierzy czas printf, write, oraz pojedynczej operacji na pamieci. Mierzenie czasu wykonane jest na poziomie assemblera.

zadanie3:

program wykorzystuje w assemblerze zmienną zadeklarowaną w C, oraz odwrotnie, zmienną z assemblera w C.

lab5

zadanie1-4:

program pokazuje dzialania na FPU. odczytuje rejestr stanu i kontrolny, a następnie przeprowadza operacje dzielenia dwoch liczb zmiennoprzecinkowych w dla dwoch roznych precyzji oraz sposobow zaokraglania. Na koniec wywoluje jeden z 2 wyjatkow: dzielenie przez zero lub stack underflow. Po każdej operacji wyswietlany jest stan rejestru kontrolnego , oraz - dla dzielenia - bity liczby zmiennoprzecinkowej, oraz reprezentacja dziesiętna.

zadanie5:

program obrazuje to, ze FPU jest w stnaie wykonac wiecej niz jedna instrukcje jednoczesnie. wykonuje dwie rozne sekwencje tych samych opracji, jednak w pierwszym przypadku operacje te są od siebie zależne, a drugim prawie wcale. Wyświetla wynik całościowego pomiaru czasu, który jest zdecydowanie niższy przy sekwencji operacji niezależnych.

lab6

Program dwukrotnie liczy całkę od 1 do 2 z ( 1 - x^2 )/x po dx, za pierwszym razem korzystając z mechanizmów dodawania w C, za drugim wykorzystując przetwarzanie w rejestrach XMM z poziomu assemblera. Zwraca czas wykonania obliczeń, który dla XMM jest mniejszy o rząd wielkości.

lab7

zadanie1:

program pokazuje, że pamięć Cache jest zbudowana z linii. Pierwsze 16 elementów (64b - dlugosc linii) jest pobieranych z tablicy bezpośrednio jeden po drugim, co owocuje w najgorszym wypadku 15 cache hitami. następne elementy pobierane są co indeks większy o 16, więc w najgorszym wypadku powinny to byc zawsze cache missy.

zadanie2:

Program pokazuje , ze cala pamiec cache ma jakiś rozmiar. Zakładając, ze rozmiar ten jest mniejszy niż 10MB, wypełnia cache elementami z tablicy o rozmiarze 10MB (w cache zostaną ostatnie elementy), a następnie iterując wstecz, pokazuje, że dopóki nie wykroczymy poza rozmiar cache, liczba missów jest niewielka, a następnie rośnie w znaczący sposób.

zadanie3:

Program pokazuje różnicę w czasie sumowania elementów macierzy po wierszach i kolumnach, oraz średni czas operacji na jednym elemencie w zależności od rozmiaru macierzy. Przejście po wierszach jest szybsze, ponieważ korzystamy z linii cache.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.