DLX - Assembler < Assembler < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) für Interessierte | Datum: | 02:05 Mo 06.12.2004 | Autor: | PeterM84 |
Dieses programmfragment in C berechnet den größten gemeinsamen teiler zweier zahlen [mm] z_0 [/mm] und [mm] z_1. [/mm] das ergebnis steht am ende in der variablen v.
Algorithmus 0.1 (GGT)
beginn
int u = [mm] z_0 [/mm] ;
int v = [mm] z_1 [/mm] ;
int t;
do {
if (u < v) {
t = u;
u = v;
v = t;
}
u = u v;
} while (u!=0);
Ich muss das programm in DLX-Assembler übersetzen. Ich muss davon ausgehen, dass die adressen der variablen u, v und t in [mm] R_1 [/mm] , [mm] R_2 [/mm] und [mm] R_3 [/mm] gespeichert sind. Am ende jeder schleifeniteration sollen die werte der variablen in den speicher zurück geschrieben werden.
Dann muss ich noch den Instruction Count meines Programmes bei der Berechnugn des größten gemeinsamen teilers von [mm] z_0 [/mm] = 12 und [mm] z_1 [/mm] = 8 bestimmen.
Was ist denn überhaupt DLX-Assembler?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo, PeterM84
google doch mal "DLX Assembler" gibt genu rlevante treffer.
|
|
|
|
|
Status: |
(Frage) für Interessierte | Datum: | 23:07 Di 07.12.2004 | Autor: | PeterM84 |
hi, ich hab mich bis eben mit der aufgabe auseinander gesetzt. einige ansätze habe ich schon rausbekommen, aber es scheint mir noch nicht ganz richtig zu sein.
LW R1, u
LW R2, v
LW R3, t
loop: SLT R4, R1, R2 // if u < v
hier weiß ich nicht, wie ich t = u, u=t und v=t zeigen soll
SUB R1, R1, R2 // un = u-v
BNEZ R1 loop // springe zum speicher
Ist der ansatz wenigstens richtig?
|
|
|
|