9 - CPU-Design [ID:10298]
50 von 761 angezeigt

Moin moin allerseits. Erste Frage, habt ihr Fragen?

Einer hat gerade geklärt. Keine Fragen? Okay.

Dann weiter im Text. Schauen, dass wir einen Crash Course Assembler Programmierung hinter uns kriegen, damit ihr wisst, was die CPU dann eigentlich wirklich ausführen soll.

Was wir am Dienstag angeguckt hatten, waren die Kontrollstrukturen, die wir uns vor und bei verschleifen. Das zeugt alles abbildbar auf Goto Instruktionen bzw. bedingte Springer.

Als Bedingungen zu den üblichen Größerkleiner, Größerkleich, Ungleich usw. Dazu gibt es dann entsprechend Assembler Instruktionen.

Es gibt statt Goto, das heißt jetzt nicht mehr Goto, sondern im Allgemeinen heißt es Jump. Hier schaut es ein bisschen anders aus.

Das J steht meistens für Jump. Manche Prozessorhersteller sagen auch Branch dazu. Dann steht dementsprechend ein kleines B da.

Dann kommt hier eine Bedingung oder Vergleich. Kleiner, größer oder so was. Dann die zwei Dinge, die man miteinander vergleichen will und wo dann hin gespucken werden soll.

Das erste, was man jetzt schon bei vielen Prozessoren sieht, ist, so kann es nicht gehen. Warum? Die meisten Prozessoren kennen keine drei Parameter.

Je nachdem wie viel Geld man ausgibt. Billig Mikrocontroller kennen ganz genau ein Parameter.

Wenn man ein bisschen teurer in die Geldbörse gelangt, dann kennen sie zwei.

Und selbst wenn man von AMD oder so die ganz teuren AMD 64 Prozessoren kauft, auch die haben nur zwei Parameter.

Was machen wir da? Letztendlich dröseln wir es auf in zwei Instruktionen. Die erste Instruktion vergleicht.

Einfach zwei Werte miteinander vergleichen. So nach dem Motto vergleich mal 13 und 24.

Wenn man das als Mensch so gesagt kriegt, dann tut man das. Was soll ich damit jetzt tun?

Was der Rechner macht oder die CPU machen soll, sie soll sich das Vergleichsergebnis merken.

Da waren die zwei Zahlen gleich, die erste größer, die zweite größer und so weiter.

Und bei dem darunterstehenden bedingten Sprung da entsprechend springen.

Wo merkt man sich jetzt dieses Zwischenergebnis vor diesem Vergleich hier oben?

Der Vergleich merkt sich eine CPU meistens in den sogenannten Condition Code Flex.

Das ist letztendlich ein Register, entweder ein implizites, so wie hier.

Da steht ja kein Register da, wo er sich das merken soll. Dann merkt er sich das implizit.

Es gibt auch Prozessoren, da gibt es explizit ein anzugebendes Register.

Beispielsweise bei Spark Prozessoren, da kann ich sagen vergleich mal die zwei und merkt dir das Resultat im dritten Register.

Jetzt kann man sich dann überlegen, was ist ein Compare eigentlich?

Wie der Name sagt, ein Vergleich. Aber wie vergleiche ich jetzt zwei Zahlen, die binär codiert sind?

Was brauchen wir denn? Also wir hatten ein kleiner, wir haben einen größer, wir haben ein gleich, wir haben einen ungleich, wir haben einen größer gleich, wir haben einen kleiner gleich.

Es kann auch ein paar mehr geben, je nach Prozessor, aber nehmen wir mal die, das sind so die, die man zu, ich sag mal, 99% kennt.

Brauchen wir jetzt sechs Flex?

Nö. Wie viel brauchen wir denn?

Wir brauchen eigentlich nichts Neues. Unser Alu bietet uns, wenn ich mir nicht entfalten will, was wir brauchen.

Ja, da möchte ich jetzt hin, wenn du mir das noch erklären kannst, warum das schon reicht, dann bin ich glücklich und die anderen hoffentlich auch.

Wenn ich die beiden Zahlen subtrahiere, kann ich aus dem Vorzeichen lesen, ob die eine Zahl größer war oder größer war als die andere.

Wir wissen, ob die Zahl null ist.

Also, machen wir es mal. Also vergleichen wir mal sozusagen a kleiner b.

Das ist genau dann, wenn du sagst, wir sollen die zwei Zahlen subtrahieren. Das ist schon mal eine sehr gute Idee.

Wenn ich die subtrahiere, wann ist das Kleine jetzt wahr?

Also, ich ersetze das sozusagen durch ein Minus.

Also, ich ziehe das b von dem a ab und wenn jetzt was rauskommt, was kleiner null ist, dann war das b wohl größer.

Also müsste hier sozusagen das Seinfleck gesetzt sein.

Wenn das Vorzeichen mit gesetzt ist bei der Subtraktion, bei dem Ergebnis, das wir berechnet haben, dann war das Ergebnis wohl kleiner.

So, größer. Mal sehen, wer alles reinfällt.

Jetzt könnte man ja erstmal denken, das Seinfleck darf nicht gesetzt sein.

Also, da kommt jetzt die Null noch mit dazu. Die sollen natürlich jetzt nicht vorzeigen und nicht Zero.

Bei dem Gleich, was ist unter dir einfach?

Wann sind die zwei Zahlen?

Wenn sie beide gleich sind, muss Null rauskommen. Also an der Stelle Zerofleck muss gesetzt sein.

Das geht jetzt aber nur für schwarze Nullsinn zu sein. Also, wenn jetzt das Urteil des Bifidens gesetzt ist, dann kann ja auch die 2 negativ sein. Das ist eigentlich kleiner.

So, ungleich. Kann man hier auch wieder reinfallen. Der Kameramann schüttelt mit dem Kopf, hat er recht.

Also, wenn das bei der Subtraktion irgendwas nicht Null rauskommt, dann müssen die zwei verschieden sein.

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:32:40 Min

Aufnahmedatum

2013-05-16

Hochgeladen am

2019-04-06 11:19:03

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen