II-INF3-HOME

  1. Einführung: ISA-Schnittstelle

  2. Befehlssatz

  3. Testfragen und Übungen


II-INFORMATIK3 WS04
VL2: Einführung

    Achtung : Skript gibt den mündlichen Vortrag nur teilweise wieder !!!
                        

AUTHOR: Gerd Döben-Henisch
DATE OF FIRST GENERATION: Oct-8, 2004
DATE OF LAST CHANGE: Jan-23,2005
EMAIL: doeben_at_fb2.fh-frankfurt.de



1. Einführung: ISA-Schnittstelle

Wie angekündigt, werden sich die ersten Vorlesungen mit dem Thema der Hardwarearchitektur beschäftigen. Am Beispiel eines konkreten Mikroprozessors soll das Zusammenspiel von Hardware und Software untersucht werden. Abschliessend sollen komplexere Architekturen untersucht werden.

Die Überlegungen beginnen heute mit dem Befehlssatz eines einfachen Mikroprozessors, der eine Untermenge der Intel IA32-Architektur darstellt. [BRYAN/O'HALLARON 2003: Chapt.4] nennen diesen Demoprozessor Y86 und sprechen vom Y86-Befehlssatz, der eine ISA bildet, eine Instruction Set Architecture.


START



2. Y86-Befehlssatz

Für die folgende Darstellung folgen wir dem Kap.4 des Buches [BRYAN/O'HALLARON 2003] (Siehe auch das Folienmaterial aus dem eLearning-Server für die Woche 18.-23.Okt2004).

Um diese Befehle zu verstehen muss man wissen, welche Struktur auf dem Y86-Prozessor vorausgesetzt werden.

Die Y86-CPU umfasst 8 32-Bit-Register (0,...,7), ein Register für 3 Condition-codes, einen Programmzähler (PC) sowie einen speicherbereich (RAM) als eine sequentielle Abfolge von Bytes sowohl für Daten wie auch Programme.

32-Bit Register 32-Bit Register
%eax %esi
%ecx %edi
%edx %esp
%ebx %ebp


Condition Codes
ZF SF OF


Byte 0 0 1 1 2 2 3 3 4 4 5 5
nop 0 0
halt 1 0
rrmovel rA, rB 2 0 rA rB
irmovel V, rB 3 0 8 rB V
rmmovel rA, D(rB) 4 0 rA rB D
mrmovel D(rB), rA 5 0 rA rB D
OP1 rA, rB 6 fn rA rB
jxx Dest 7 fn Dest
call Dest 8 0 Dest
ret 9 0
pushl rA A 0 rA 8
popl B 0 rA 8

START



3. Testfragen und Übungen

Aufgaben

Übersetzen Sie das folgende C-Programm (evtl. ergänzt um eine main-Funktion) in ein Y86-Programm


/* Find number of elements in
   null-terminated list */

int len2(int a[])
{
  int len = 0;
  while (*a++)
	len++;
  return len;
}

Die Programme "yas" und "ssim" koennen Sie als fertige Binaries fuer Linux von der Homepage des Buches runterladen.

Fragen

Die folgenden Fragen beziehen sich auf die Y86-Architektur (siehe auch Foliensatz auf elearning-Server):

  1. Was versteht man unter der ISA (:= Instruction Set Architecture)?

  2. Welche Funktion haben bei einer CPU die Register?

  3. Welche Funktion hat das Flag-Register, auch Condition-Codes genannt?

  4. Welche Funktion hat der Programmzähler (program counter)?

  5. Welche Funktion hat der Program-Stack?

  6. Was sind die beiden wichtigsten Stack-Befehle?

  7. Welche Beziehung besteht zwischen dem Aufrufen einer Routine und dem Stack?

  8. Welche Veränderungen können Instruktionen im Bereich der CPU auslösen?


START