02.01.2011, 18:26
Hallo Forum,
ich schreib hier mal ein kleines tut wie man eine Subroutine schreibt.
Ich weiss zwar das es kaum einen interessieren wird aber, ich habe Langeweile und dachte ich mach mal was
Also wer kein Interesse hat, kann den thread jetzt einafch wieder verlassen.
Was sind die Vorraussetzungen?
-Interesse am coden
-Interesse MIPS zu lernen
-nicht verzweifeln wenn man was net versteht
also lätse go!
Mega Basics:
MIPS: Ist die computer Sprache (assembly language) die die PSP nutzt (MIPS- Prozessor)
Erklärung der Begriffe:
Was bringen einem Subroutines?
Template
hier ist das template:
lui t0 $(ersten 4 Zahlen der Adresse)
lui t1 $(ersten 4 zahlen des Values)
addi t1 t1 $(hinteren 4 Zahlen des Values)
sw t1 $hinteren 4 Zahlen der adresse)(to)
jr ra
sieht vllt noch ein wenig verwirrend aus, hier sind die weiteren Erläuterungen:
anhand eines codes:
Wichtig!! (true adressing)
am rande, negative Rule:
#beispiel
0x12345678 0x87654321
lui to $1234 die ersten 4 zahlen der adresse
lui t1 $8765 die ersten 4 zahlen des values
addi t1 t1 $4321 die letzten 4 zahlen des values werden
an die ersten 4 platziert
sw t1 $5678 das fügt das komplette value (t1)
an die komplette adresse (t0) an
jr ra befehl für ende des codes
das wars, dann habt ihr eine Halbfertige subroutine!
damit eure subroutine funktioniert braucht ihr einen hook!
so das war der 1. Teil des threads.
2. Teil kommt bald.
gr emkaywe
ich schreib hier mal ein kleines tut wie man eine Subroutine schreibt.
Ich weiss zwar das es kaum einen interessieren wird aber, ich habe Langeweile und dachte ich mach mal was
Also wer kein Interesse hat, kann den thread jetzt einafch wieder verlassen.
Was sind die Vorraussetzungen?
-Interesse am coden
-Interesse MIPS zu lernen
-nicht verzweifeln wenn man was net versteht
also lätse go!
Mega Basics:
MIPS: Ist die computer Sprache (assembly language) die die PSP nutzt (MIPS- Prozessor)
Erklärung der Begriffe:
Spoiler: (anzeigen)
LUI = Geben die ersten 4 Zahlen der Adresse/Value an
ADDI/ORI =Geben die hinteren 4 Zahlen des Values an
SW = Gibt die letzten 4 Zahlen der Adresse an
Die Erklärungen sind stark vereinfacht!!
ADDI/ORI =Geben die hinteren 4 Zahlen des Values an
SW = Gibt die letzten 4 Zahlen der Adresse an
Die Erklärungen sind stark vereinfacht!!
Spoiler: (anzeigen)
Subrouitines sind der Einstieg ins MIPS coding. Ausserdem bauen auf subroutines, jokers, credit force, mark and recall auf!
Spoiler: (anzeigen)
Ist eine Zusammensetzung von mehreren MIPS Befehlen zur Vereinafachung
lui t0 $(ersten 4 Zahlen der Adresse)
lui t1 $(ersten 4 zahlen des Values)
addi t1 t1 $(hinteren 4 Zahlen des Values)
sw t1 $hinteren 4 Zahlen der adresse)(to)
jr ra
sieht vllt noch ein wenig verwirrend aus, hier sind die weiteren Erläuterungen:
anhand eines codes:
Wichtig!! (true adressing)
Spoiler: (anzeigen)
In der PSP werden die adressen als fake adressen angegeben, das bedeutet das wir die adressen unserer codes erst in true adressing umwandeln müssen. Das macht man indem man den Calculator (windows) auf scientific (XP) oder programmer (win 7) stellt und bei beiden auf HEX stellt und nun eure Adresse plus 8800000 rechnet (true adressing)
also:
eure Adresse (von dem code den ihr habt) plus 8800000 rechnen damit ihr die true adress bekommt (spaeter werden die 8800000 wieder subtrahiert)
also:
eure Adresse (von dem code den ihr habt) plus 8800000 rechnen damit ihr die true adress bekommt (spaeter werden die 8800000 wieder subtrahiert)
Spoiler: (anzeigen)
leider gibt es noch eine negative rule. Sobald in der adresse die hinteren 4 Zahlen groesser als 7fff sind fangen die negativen zahlen an, das bedeutet ihr müsst die vorderen 4 Zahlen der Adresse plus 1 addieren. bsp:
0x1234ffff (ffff ist groesser als 7fff also werden zu den ersten 4 Zahlen 1 addiert)
neue Adresse:
0x1235ffff
Das ist die negative rule
0x1234ffff (ffff ist groesser als 7fff also werden zu den ersten 4 Zahlen 1 addiert)
neue Adresse:
0x1235ffff
Das ist die negative rule
0x12345678 0x87654321
lui to $1234 die ersten 4 zahlen der adresse
lui t1 $8765 die ersten 4 zahlen des values
addi t1 t1 $4321 die letzten 4 zahlen des values werden
an die ersten 4 platziert
sw t1 $5678 das fügt das komplette value (t1)
an die komplette adresse (t0) an
jr ra befehl für ende des codes
das wars, dann habt ihr eine Halbfertige subroutine!
damit eure subroutine funktioniert braucht ihr einen hook!
Spoiler: (anzeigen)
Hooks sind j oder jal also jump registers. Diese müsst ihr über euer halfertiges subroutine dann setzten.
2. Teil kommt bald.
gr emkaywe