Klausur 904

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur 904
Um das hier mal fortzuführen :slight_smile: [alle angaben ohne gewähr…]

Aufgabe 1

a) 3, 4, 5, 6

b) zeitkritische Stellen, Benutzung von Ressourcen (zB lesen von Tastaturpuffer...)

c) carry = übertrag
    zero = wenn ergebnis null ist
    negative = wenn ergebnis negativ ist
   iterrupt = ob interrupts zugelassen werden



Aufgabe 2

a) struct foo {
         char c
         signed word i
         int n
    } 
   Byte Order ist Little Endian

b) Öhm, weil hmm... Vielleicht weil die Byte Order zB bei Netzwerkgeschichten wichtig ist und der Programmierer Acht geben muss, aber die BitOrder nur auf Hardware Ebene interessant ist und dem Programmierer verborgen bleibt? Hab aber keine Ahnung...

c) is_big_endian:  (kein plan ob das geht...)
   movb $1, %al      
   andw $1, %ax 
   ret     //ergebnis steht in %eax



Aufgabe 3:

a) 01111111 11111111 11111111 11111111 = 0x7f ff ff ff
  Bedeutung? Keine Ahnung, vielleicht die max. darstellbare signed int Zahl?

b) movl 4(%esp), %eax
     andl $1, %eax
     ret

c) int test(int n) {
             int i = 0;
 loop:   int tmp = n;
             tmp = tmp * tmp;
             if (i = tmp) return -1;
             tmp = i;
             tmp = tmp * tmp;
             tmp = tmp + n;
             tmp = func(tmp);
             if (tmp= 1) 
                return i
             else 
             i = i+1;
             goto loop;
      }
(Keine Ahnung, ob es das ist was die wollen...)




Aufgabe 4:

a)
         .align 4 
isqrt: .globl isqrt 
         movl 4(%esp), %ecx <=
         xorl   %edx, %edx 
         cmpl %ecx, %edx 
         jae .L4 
         .align 4 
.L5:
        incl %edx   <=
        movl %edx, %eax 
        imull %eax, %eax 
        cmpl %ecx,  %eax   <=
         jb .L5 
.L4:  movl %edx, %eax <=
          ret 

b) vielleicht so eine Art Code Alignment? zB das .L5 an einer  durch vier teilbaren Stelle steht, weil da immer wieder hingesprungen werden muss?

c) Speicherbedarf:   34? Aber wie immer, hab keine Ahnung, im Skript steht da ja nicht sonderlich viel dazu, vielleicht kann mir das ja mal jmd. erklären...

d) keine ahnung, vielleicht hat der Programmierer vergessen, dass er auch call benutzen könnte... Was bedeutet überhaupt ".word"?



Aufgabe 5)

addierer mit einer festverlöteten 1 :-)