############################################################################### ##### Beispielcode fuer den Aufruf eines Unterprogramms ##### ##### mit Uebergabe- und Rueckgabewerten ##### ##### Folgender High-Level-Code wird in Mips-Assembler uebersetzt: ##### ############################################################################### ##### int main () ##### ##### { ##### ##### int y; ##### ##### ... ##### ##### y = diffofsum (2,3,4,5); ##### ##### ... ##### ##### } ##### ##### int diffofsums (int f, int g, int h, int i) ##### ##### { ##### ##### int result; ##### ##### result = (f+g)-(h+i); ##### ##### return result; ##### ##### } ##### ############################################################################### main: # Laden der f,g,h,i in die Uebergaberegister a0-a3 addi $a0, $zero, 2 addi $a1, $zero, 3 addi $a2, $zero, 4 addi $a3, $zero, 5 # Aufruf der Unterprozedur diffofsum, Speichern der Ruecksprungadresse in $ra jal diffofsums # Benutzen des Rueckgabewertes, der in $v0 liegt, $s0 = y add $s0, $v0, $zero # exit li $v0, 10 syscall ####################### Unterprogramm diffofsums ############################## diffofsums: add $t0, $a0, $a1 # t0 = f+g add $t1, $a2, $a3 # t1 = h+i sub $t2, $t0, $t1 # s0 = (f+g)-(h+i) add $v0, $t2, $zero # v0 = result jr $ra # Ruecksprung ####################### Ende des Unterprogramms diffofsums #################### ############################################################################### ## Dieser Beispielcode fuer den Aufruf eines Unterprogramms wurde dem Buch ## ## Digital Design & Computer Architecture von Harris & Harris entnommen ## ###############################################################################