Programowanie Niskopoziomowe - Ćwiczenia: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
Przykładowe tematy ćwiczeń w środowisku symulatora SPIM: | == Przykładowe tematy ćwiczeń w środowisku symulatora SPIM == | ||
Środowisko realizacji: symulator SPIM w dowolnym systemi operacyjnym | |||
#Program sortujący ciąg liczb całkowitych | #Program sortujący ciąg liczb całkowitych | ||
#Mnożenie nieujemnych liczb mieszanych (część całkowita i ułamek zwykły). Wynik poprawnie skrócony. | #Mnożenie nieujemnych liczb mieszanych (część całkowita i ułamek zwykły). Wynik poprawnie skrócony. | ||
Linia 5: | Linia 7: | ||
#Dodawanie zmiennopozycyjne w formacie IEEE Single bez użycia jednostki zmiennopozycyjnej (czytanie i pisanie przy użyciu funkcji systemowych, wartość przekazywana przez rejestry jednostki zmiennopozycyjnej). | #Dodawanie zmiennopozycyjne w formacie IEEE Single bez użycia jednostki zmiennopozycyjnej (czytanie i pisanie przy użyciu funkcji systemowych, wartość przekazywana przez rejestry jednostki zmiennopozycyjnej). | ||
Przykładowe tematy ćwiczeń z programowania hybrydowego | |||
== Przykładowe tematy ćwiczeń z programowania hybrydowego == | |||
Środowisko realizacji: | Środowisko realizacji: | ||
*Linux: kompilator GCC, asembler NASM lub YASM | |||
*Windows: kompilator Microsoft C uruchamiany z wiersza poleceń (CL), asembler NASM lub MASM | |||
Ćwiczenie 1 - realizacja prostego programu, złożonego z moduu w języku C zawierającego funkcję main, zapewniającą wejście i wyjście oraz z modułu asemblerowego, zawierającego procedurę wołaną z języka C o następującej deklaracji nagłówka w C: | Ćwiczenie 1 - realizacja prostego programu, złożonego z moduu w języku C zawierającego funkcję main, zapewniającą wejście i wyjście oraz z modułu asemblerowego, zawierającego procedurę wołaną z języka C o następującej deklaracji nagłówka w C: |
Aktualna wersja na dzień 13:06, 12 paź 2006
Przykładowe tematy ćwiczeń w środowisku symulatora SPIM
Środowisko realizacji: symulator SPIM w dowolnym systemi operacyjnym
- Program sortujący ciąg liczb całkowitych
- Mnożenie nieujemnych liczb mieszanych (część całkowita i ułamek zwykły). Wynik poprawnie skrócony.
- Mnożenie zmiennopozycyjne w formacie IEEE Single bez użycia jednostki zmiennopozycyjnej (czytanie i pisanie przy użyciu funkcji systemowych, wartość przekazywana przez rejestry jednostki zmiennopozycyjnej).
- Dodawanie zmiennopozycyjne w formacie IEEE Single bez użycia jednostki zmiennopozycyjnej (czytanie i pisanie przy użyciu funkcji systemowych, wartość przekazywana przez rejestry jednostki zmiennopozycyjnej).
Przykładowe tematy ćwiczeń z programowania hybrydowego
Środowisko realizacji:
- Linux: kompilator GCC, asembler NASM lub YASM
- Windows: kompilator Microsoft C uruchamiany z wiersza poleceń (CL), asembler NASM lub MASM
Ćwiczenie 1 - realizacja prostego programu, złożonego z moduu w języku C zawierającego funkcję main, zapewniającą wejście i wyjście oraz z modułu asemblerowego, zawierającego procedurę wołaną z języka C o następującej deklaracji nagłówka w C:
- int counthexdigits(char *) - zliczanie znaków będących cyframi szesnastkowymi w łańcuchu
- int countuppercase(char *) - zliczanie wielkich liter w łańcuchu
- int countlowercase(char *) - zliczanie wielkich liter w łańcuchu
- int oct2int(char *) – konwersja liczby z zapisu ósemkowego
- int hex2int(char *) – konwersja liczby z zapisu szesnastkowego
- char *tohex(char *, unsigned) - konwersja liczby do reprezentacji znakowej w zapisie szesnastkowym; funkcja zwraca wartość pierwszego argumentu - wskaźnik na łańcuch wyjściowy, prealokowany przez program główny
- char *todec(char *, unsigned)
- int index(char *, char) – pozycja znaku w łańcuchu
- unsigned revbits(unsigned) – odwrócenie kolejności bitów w słowie
- unsigned countones(unsigned) – zliczanie bitów o wartości 1 w słowie wejóciowym
- char *chgcase(char *) - zamiana liter małych na wielkie i wielkich na małe, bez zmiany innych znaków w łańcuchu
- char *remove(char *, char) - usunięcie wszystkich wystąpień zadanego znaku z łańucha, ze "zsunięciem" łańcucha
- char *replace(char *, char, char)
Ćwiczenie 2 - realizacja programu złożonego z modułu w języku C i modułu asemblerowego, ze zwróceniem uwagi na długość i wydajność kodu. W niektórych projektach można użyć jednostki wektorowej.
- double *add(double *d, double *s); - dodawanie zmiennopozycyjne podwójnej precyzji bez użycia instrukcji zmiennopozycyjnych
- double *sub(double *d, double *s); - odejmowanie zmiennopozycyjne podwójnej precyzji bez użycia instrukcji zmiennopozycyjnych
- float *rcp(float *d, float *s); - odwrotność liczby zmiennopozycyjnej przy użyciu alg. Newtona-Raphsona bez użycia instrukcji zmiennopozycyjnych
- void *my_memcpy(void *, void *, unsigned) - Odpowiednik funkcji memcpy działający niezależnie od nakładania adresów buforów. Optymalizacja!!!
- unsigned sqrt(unsigned) - pierwiastek kwadratowy liczby 32-bitowej
- funkcja obliczająca kwadrat liczby zespolonej w reprezentacji IEEE double, z użyciem jednostki SSE2