This little program is written in both C++ ans MIPS assembly code. It asks the user for their name and age, then repeats the info back to the screen. Notice the manual adjustment of the runtime stack in the assembly version.
######################################### #### C++ CODE ######################################### # void GetInfo(string& name, int& age); # void DisplayInfo(string name, int age); # int main() { # string name; # int age; # GetInfo(name, age); # DisplayInfo(name, age); # return (0); # } # void GetInfo(string& name, int& age) { # cout << "Enter your name: "; # cin >> name; # cout << "Enter your age: "; # cin >> age; # } # void DisplayInfo(string name, int age) { # cout << "So " << name # << " you are "<< age << " years old eh?"; # } ########################################## #### Same Algorithm in MIPS ########################################## .data nameprompt: .asciiz "Enter your name: " ageprompt: .asciiz "Enter your age: " wordso: .asciiz "So " wordyouare: .asciiz " you are " wordyearsoldeh: .asciiz " years old eh?" buf: .space 30 # Name Buffer .text .globl main main: #addiu $sp,$sp, -4 #sw $ra,0($sp) # preserve $ra jal GetInfo jal DisplayInfo lw $ra, 0($sp) # pop ra addiu $sp, $sp, 4 li $v0, 10 # system call code for exit = 10 syscall # call operating system ########################## ##### MIPS Functions ########################## GetInfo: li $v0, 4 # print_string la $a0, nameprompt # a0 = "Enter your name " syscall <?php the_content('» » » »'); ?> # read inname string li $v0, 8 # read_str la $a0, buf la $a1, 30 syscall move $s0, $v0 # s0 = &name # ask the user's age li $v0, 4 # print_string la $a0, ageprompt # a0 = "Enter your age" syscall # read in age li $v0, 5 # read_int syscall move $s1, $v0 # s1 = age jr $ra DisplayInfo: # print "So " li $v0, 4 # print_string la $a0, wordso # a0 = "So " syscall #print name li $v0, 4 # print_string #la $a0, 0($sp) # la $a0, buf syscall move $a0, $s0 # print " you are " li $v0, 4 # print_string la $a0, wordyouare # a0 = "you are " syscall # print age li $v0, 1 # print_int move $a0, $s1 # a0 = age syscall # print " years old eh?" li $v0, 4 # print_string la $a0, wordyearsoldeh # a0 = " years old eh?" syscall jr $ra