uwaga - programy MOGĄ zawierać błędy! używaj z głową
hello world z poziomu assemblera.
program używający funkcji napisanej w assemblerze z poziomu języka C (mnożenie integer)
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)
program zamieniający małe litery na duże, a duże na małe.
program wykorzystujący funkcję napisaną w C z poziomu assemblera (potęgowanie, podajemy najpierw podstawę, potem wykładnik)
program wypisujący na ekran znaki wpisane przez użytkownika.
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
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.
program z poziomu assemblera wykorzystuje funkcje scanf i printf do pobrania i wyswietlenia kolejno: liczby int, znaku i ciagu znakow.
program mierzy czas printf, write, oraz pojedynczej operacji na pamieci. Mierzenie czasu wykonane jest na poziomie assemblera.
program wykorzystuje w assemblerze zmienną zadeklarowaną w C, oraz odwrotnie, zmienną z assemblera w C.
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.
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.
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.
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.
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.
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.