REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  



CDUR - Matrix

CDUR - Matrix


 

TABELLEN



PROZESSE /


Schüler

Lehrer

FUNKTIONEN


Schüler suchen


R




Klassenb. Blatt 1


X


X







C



Reorganisation


D



Versatz


R/U




nach Stärke geordnet



C Create


D Delete


U Update


R Read






oder höchste Stärke


CDUR T DFD nicht ableitbar; z.B.: externe Pfeile

CDUR T genauer bezüglich Flüsse


Objektorientierte Programmierung


Unterprogramme und Stacks


Der Stack (=Stapel) dient zur Variablen- oder Wertübergabe von einem Programm zu seinem Unterprogramm. Der Stack ermöglicht die Kommunikation zwischen Hauptprogramm und Unterprogramm. Der Stack funktioniert nach dem Prinzip First In Last Out.


PUSH           ein Wert wird in den Stack geschrieben

PUSH x T x wird auf den Stapel gelegt, Stapel wird erhöht


POP ein Wert wird aus dem Stack geholt

POP x T x wird vom Stapel genommen, der nächste Wert liegt nun oben


y=1;

for (i=1; i<=5; i++) y=y*a; T y=a5 T y=pot(a,5);

.

.

.

k=1;

for (u=1; u<=7; u++) k=k*z; T k=z7

.

.

.

p=1;

for (m=1; m<=4; m++) p=p*s; T p=s4


Sobald eine Aktion in einem Programm mehrmals vorkommt, ist es besser stattdessen ein Unterprogramm zu benützen.


long pot (int basis, int exp)




Übergabe von Werten:


a



Call by Value

Call by Reference

( Call by Name )


IMMEDIATE ADDRESSING (unmittelbar) :     PUSH 7 (=Call by Value)

DIRECT ADDRESSING (direkt) :                                  PUSH M[1000] (=Call by Reference)

INDIRECT ADDRESSING (indirekt) :               PUSH M[M[2000]]

M Memory (Speicherstelle)


Beispiel:


int a;               a Compiler vergibt die Plätze

int k;


e=pot (a, k);    pot







<HP>



PUSH M[1090]


k wird auf den Stack gelegt

PUSH M[1078]


a wird auf den Stack gelegt

e = pot(a,k)

PUSH 1008


Rücksprungadresse auf Stack

JMP 50000


Sprung zum UP (eigentlicher UP-Aufruf)

POP M[1094]


Ergebnis (y) wird nach e geschrieben









a



Direct Addressing




Immediate Addressing

k








e












Stack (P1)



Stackbeginn

(P2)




(P3)












return address




x




y




basis




exp












POP M[29999]


Rücksprungaddresse von Stack


POP M[30004]


a (12) vom Stack nach basis

POP M[30006]


k (2) vom Stack nach exp

UP pot





Schleife







PUSH M[30002]


Ergebnis y (144) auf Stack


JMP[M[M29999]


Rücksprung ins HP ( Indirect Addressing )






Static Binding ( Statisches Binden )


= Die Adressen der Unterprogramme werden beim compilieren festgelegt




Parameter werden in den Stack geschrieben

JMP 10020


Unterprogrammaufruf



Rücksprungaddresse wird in den Stack geschrieben







JMP 10020














UP Anfang





CALLING OVERHEAD:  Das Schreiben in den Stack - benötigt viel Zeit


deshalb wird bei kleineren UP die INLINE DEFINITION (=MAKRO EXPANSION) verwendet.

Das UP wird in die Stellen geschrieben, wo eigentlich der Unterprogrammaufruf stehen sollte. Dadurch entfällt das Stacken und das Springen T Das Programm wird schneller, braucht aber mehr Speicher. Diese Methode wird auch für Makros verwendet.







Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen