offene Fragen

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.

offene Fragen
Hallo habe ein paar offene Fragen bzw bin mir mit den antworten nicht sicher…vielleicht könnt ihr ja euren Senf dazu geben :wink:

Warum sollte ein Assembler Programmierer die Byte-Order seines Rechners kennen,während die Bit Order des Rechners im allgemeinen keine Rolle spielt?

Während der Initialisierung eine PCs wird u.a. folgender BIOS Code(ROM) durchlaufen:


movw $L1,%sp
jmp L3
L1: .word L2
L2: …

L3: …
ret

3)Für welche Hochsprachen Konstrukte wird besonders viel Platz auf dem Stack benötigt?

Warum gibt es auf den meisten Prozessoren zwei verschiedene Rechts-Shift-Operationen ,jedoch meist nur eine Links-Shift Operation?

Gespeichert werden soll ein zweidimensionales Array(breite:3elemente,Höhe: 4 Elemente)
Jedes Element des Arrays brauche 2 Byte.Die Startadresse des Arrays im Speicher sei 5000.
Geben Sie eine einfache Formel an,die bei gegebenen Indizes 0<=x<3 und 0<=y<4 die Adresse A(x,y) des Elementes im Speicher berechnet.

Gegeben seien Multiplizierer Bausteine MUL8 die das 8 Bit Produkt zweier 4 Bit Werte erzeugen und elementare VA.
Geben Sie-mit Begründung-an,wieviele Bausteine MUL8 und VA mindestens nötig sind,um einen Multiplizierer aufzubauen,der die unteren 8 Bit des Produktes zweier angelegter Byte Werte (A,B)ausgibt!

Ein Prozessor läuft mit 1GHZ und arbeitet mit jedem Takt genau einen Befehl ab.ER aht für das folgende Programmstück 28ns zu Ausführung benötigt.Wie groß war der Wert von %ecx zum Startzeitpunkt?Begründen Sie Ihre Antwort!

 ...
 jmp test

loop: movl $0,(%ebx)
addl $4,%ebx
subl $1,%ecx
cmpl $0,%ecx
test: cmpl $0,%ecx
jne loop

das wars erst einmal…vielleicht hat ja wer ne idee…


zu 1): Ich denke weil ein Byte die kleinste addressierbare Einheit ist - um alles drunter kümmert sich dann die Hardware…

Was ist die Frage bei 2? War das was mit der Stackpointer Initialisierung?


huch glatt da was weggelassen
man soll sagen was dort gemacht wird und welcher sinn diese umständliche programmierweise haben könnte


  1. schaut aus wie ein manueller Unterprogrammaufruf. Warum manuell? naja, weil wir im ROM sind koennen wir nicht einfach nen Stack anlegen oder Sachen auf selbigen schieben. Wir muessen die Adresse zunaechst auf 16 bit aufpumpen (word) und dann das Vieh auf den 16bit-Stackregister schreiben.

  2. Naja, ich wuerd sagen platzintensiv sind grundsaetzlich mal zusammengesetzte Datentypen wie Records, Arrays und in der ultracombo dann Arrays von Records


Es gibt einen Shift der das Vorzeichenbit (das hoechstwertige Bit) erhaelt und einen der in jedem Fall mit 0 auffuellt. Der richtige Shift haengt also vom Anwendungszweck ab.
Beispiel Division durch 2 mit 4 Bits:

1100 unsigned = 12

Willst Du das also durch zwei teilen erwartest Du das Ergebnis 6,
also 0110. Beim Shift wird das oberste Bit also mit einer 0 aufgefuellt.

1100 signed = -4

Wenn man das nun durch zwei teilt, erwartet man als Ergebnis -2, also 1110. Hier wird beim Shift das hoechstwertige Bit erhalten.

In letzterem Fall spricht man von einem arithmetischen Shift, in ersterem von einem logischen Shift.

Bei einem Shift in die andere Richtung tritt das Problem nicht auf.

wenn Array[3][4]
A(x,y) = 5000 + x24 + y*2

1 GHz bedeutet 10^9 Takte pro Sekunde. Wenn in jedem Takt ein Befehl bearbeitet wird bedeutet das also 10^9 Befehle pro Sekunde. In 28 ns kann der Prozessor 28 Befehle abarbeiten.

Im Programm wird in jedem Schleifendurchlauf (bist Du sicher dass der cmpl $0, %ecx zweimal nacheinander im Programm steht??) ecx um eins erniedrigt bis er irgendwann 0 erreicht.
Unter Einbezug des jmp vor der Schleife wird die Schleife bis zum Abbruch nach 28 ns vier mal durchlaufen. Der Wert von ecx muss zu Beginn also 4 gewesen sein, sonst wuerde die Schleife nicht nach 28 Befehlen verlassen. Allerdings geht die Rechnung so nicht ganz auf… Wenn das eine cmpl fehlen wuerde, waeren es 5 Durchlaeufe und ecx waere zu Beginn 5. (und die Rechnung geht auf).