TI2-Tutorium, 29.05.2013

Nachbesprechung

Vorbesprechung

Übung 6

1. Abstand von FP-Zahlen

#include <stdio.h>
#include <float.h>
int main() {
    float i;
    for (i = 0; i < FLT_MAX; i++) {
        printf("%f\n", i);
    }
}

Wie oft wird diese Schleife ausgeführt werden? Warum? Demonstrieren Sie anhand von 32-bit breiten IEEE-Floating-Point Zahlen!

2. x87-Addieren

Schreiben Sie ein einfaches Assembler-Programm, das Floating-Point-Zahlen addiert. Beachten Sie, dass sie im Assembler-Quelltext keine Komma-Zahlen angeben können, Sie müssen von Hand den entsprechenden Zahlenwert eintippen.

Mein Hinweis: lasst euch von einem C-Programm die Zahlen übergeben.

Um zu gucken, wie C die x87-FPU nutzt benutzt die Kompilierflags -O0 -mfpmath=387.

3. Bubble-Sort

#include <stdio.h>
#include <inttypes.h>

// Unsere NASM-Funktion bekommt ein Zeiger auf das Array und die Anzahl der
// Elemente in dem Array übergeben
void bubble_sort(int64_t[], uint64_t);

unsigned int main() {
    // Erstelle Array mit ein paar Zahlen
    int64_t array[] = {6,8,2,6,-5,3,-1,9,8,0,6,4,5,-8,-4,3,2,6};
    uint64_t num_elements = sizeof(array)/sizeof(int64_t);
    int64_t i;

    printf("groesse: %u\n", num_elements);
    printf("vorher: ");
    for (i = 0; i < num_elements; ++i) { printf("%i, ", array[i]); }

    // Sortieren
    bubble_sort(array,num_elements);

    printf("\nnachher: ");
    for (i = 0; i < num_elements; ++i) { printf("%i, ", array[i]); }
    printf("\n");
    return 0;
}

3. Bubble-Sort

Gewünschte Ausgabe:

groesse: 18
vorher: 6, 8, 2, 6, -5, 3, -1, 9, 8, 0, 6, 4, 5, -8, -4, 3, 2, 6,
nachher: -8, -5, -4, -1, 0, 2, 2, 3, 3, 4, 5, 6, 6, 6, 6, 8, 8, 9,

Übung 7

1. Pipelines & 2. Reordering

Besprechung nächste Woche, da auch noch nicht in der Vorlesung behandelt.

3. BCD-Code-Konverter

  • BCD (Binary Coded Decimal) stellt ein spezielles binäres Format für Zahlen dar.

  • Jede Ziffer (0-9) wird durch 4 Bit (0000-1001) dargestellt.

  • Ziffern werden einzeln kodiert: 5629 wird als 0101 0110 0010 1001 kodiert.

  • Wir betrachten nur positive Zahlen.

  • bcd(5629) sollte als Ergebnis 22057 liefern.

Inhaltliches

Rechnen

  • Wenn in B+V-Darstellung oder IEEE subtrahiert wird, dann müsst ihr eine schriftliche Subtraktion durchführen.

  • Dabei immer (betragsmäßig) größere Zahl minus (betragsmäßig) kleinere Zahl rechnen.

  • Und danach das Vorzeichen des Ergebnis bestimmen.

Habt ihr Fragen?

  • Umrechnen zwischen Zehner- und Zweiersystem

  • Einer-/Zweierkomplement, B+V

  • Darstellung und Rechnen mit IEEE-Zahlen

    • Normalisierung

    • IEEE R

    • diskrete Sprünge

    • es gibt Maximum/Minimum

  • Assembler

    • Calling Conventions

    • (Call-)Stack