Subroutines

How do we modularize programs?

Example in C

int my_sub(int p){
    return p + p;
}

int main(void){
    int x,z;
    x = my_sub(3);
    z = my_sub(4);
}

Same example in Assembly

main: movi r4, 3 ; the parameter 3 that we put into the my_sub function 
    call my_sub ; ra <- pc
                ; pcc <- my_sub
nextins: movi r4, 4 ; parameter 3
    call my_sub ; ra <- pc 
                ; pcc <- my_sub
done: br done 
my_sub: add r2, r4, r4 ; r2 gets r4 + r4 (return value)
    ret ; pc<-ra