Du befindest dich hier: FSI Informatik » jahrgaenge » 2006 » "Muster"-Lösungen » "Muster"-Lösungen zu Klausuren aus Technische Informatik 2 » Aufgabe 1

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
jahrgaenge:2006:loesungen:technische_informatik_2:mar2007 [20.09.2007 14:44] 84.149.155.71jahrgaenge:2006:loesungen:technische_informatik_2:mar2007 [21.09.2007 09:49] (aktuell) 77.180.121.116
Zeile 3: Zeile 3:
   * 1) 1, 2, 1, 2, 2, 1, 2 ,1   * 1) 1, 2, 1, 2, 2, 1, 2 ,1
   * 2) Register; Immediate Operand; Direct Adress; Register Indirect (alle Variationen); Memory Indirect   * 2) Register; Immediate Operand; Direct Adress; Register Indirect (alle Variationen); Memory Indirect
-  * 3) 1, 1, 2, 2, 2, 2, 1, 2+  * 3) 1, 1, 2, 2, 2, 2, 2, 2
   * 4) 2, 1, 1, 2, 2, 1, 1, 2   * 4) 2, 1, 1, 2, 2, 1, 1, 2
   * 5) Weil die Reihenfolge der einzelnen Bytes falsch gelesen wird, z. B. 0x000000FF -> 0xFF000000   * 5) Weil die Reihenfolge der einzelnen Bytes falsch gelesen wird, z. B. 0x000000FF -> 0xFF000000
Zeile 73: Zeile 73:
 } }
 </code> </code>
 +
 +Einspruch: Bei einer for-Schleife wird ja schon vor dem Betreten die Bedingung geprüft, das passiert im Assembler-Code da aber nicht.
 +Ich hätte da so was:
 +
 +<code>
 +int func(int v) {
 +    int i;
 +    for (i = 0;; i++) {
 +        i *= i;
 +        if (i >= v) break;
 +    }
 +    return i;
 +}
 +</code>
 +
 +Die letzte Variante ist falsch, weil die Multiplikation mit %eax ist und %eax nicht zwischengespeichert wird. Dementsprechend ist die erste Variante richtig.
 +
 +Noch etwas: Ich glaube die Ints müssen unsigned Ints sein.
  
   * 2) ?   * 2) ?
-  * 3) ?+  * 3)  
 + 
 +<code> 
 +unknown: 
 + pushl %ebp 
 + movl %esp, %ebp 
 + pushl $0 
 +   .L2: 
 +    movl  -4(%ebp), %eax 
 +    imull -4(%ebp), %eax 
 +    cmpl  8(%ebp), %eax 
 +    jb    .L4 
 +    jmp   .L3 
 +.L4: 
 +    incl  -4(%ebp) 
 +    jmp   .L2 
 +.L3: 
 +    movl  -4(%ebp), %eax 
 +    movl %ebp, %esp 
 + popl %ebp 
 +    ret 
 +</code>
  
 ==== Aufgabe 7 ==== ==== Aufgabe 7 ====