ฟังก์ชั่น หรือ Procedure เป็นเครื่องมือที่สำคัญในการเขียนโปรแกรมที่มีลักษณะเป็นโครงสร้าง ซึ่งมีส่วนช่วยเป็นอย่างมากที่จะทำให้โปรแกรมสามารถเข้าใจได้ง่ายขึ้น และมีส่วนทำให้สามารถนำส่วนของโปรแกรมกลับมาใช้งานได้ใหม่ ผู้เขียนโปรแกรมสามารถทำงานกับการเขียนฟังก์ชั่น ซึ่งเป็นส่วนแยกออกมาจากโปรแกรมหลัก และมีการส่งผ่านพารามิเตอร์ต่างๆ ระหว่างฟังก์ชั่น และโปรแกรมหลัก รวมถึงข้อมูลต่างๆ ในการทำงานของฟังก์ชั่น โปรแกรมจะทำตามขั้นตอน 6 ขั้นตอน ดังต่อไปนี้
จากที่กล่าวขั้นต้น คอมพิวเตอร์ MIPS จึงมีการแบ่งรีจีสเตอร์ออกเป็นกลุ่มๆ เพื่อการเรียกฟังก์ชั่นดังต่อไปนี้
ในชุดคำสั่ง MIPS มีคำสั่งเฉพาะสำหรับการเรียกฟังก์ชั่นได้แก่ jump-and-link (jal) ที่ทำการ jump ไปยังแอดเดรสของฟังก์ชั่นที่ถูกเรียก พร้อมทั้งเก็บค่าแอดเดรสของคำสั่งถัดไปไว้ใน $ra
jal ProcedureAddress
ในส่วนของ link เป็นการเก็บค่า return address ไว้ใน $ra
การทำงานของคอมพิวเตอร์แบบ Store Program นั้นจะมีรีจีสเตอร์ที่เก็บตำแหน่งของคำสั่งที่กำลังถูกประมวลผลอยู่ รีจีสเตอร์นั้นมักมีชื่อเรียกว่า Program Counter หรือเรียกย่อว่า PC ในคอมพิวเตอร์ MIPS เรียกรีจีสเตอร์ตัวนี้ว่า Instruction Address Register คำสั่ง jal จะทำการเก็บค่า PC + 4 ไว้ในรีจีสเตอร์ $ra เพื่อการกลับมายังจุดเริ่มต้นหลังจากที่ทำงานในฟังก์ชั่นนั้นๆ เสร็จสิ้น
เพื่อรองรับการส่งผ่านการควบคุมของโปรแกรมกลับคืน สู่จุดเริ่มต้น ชุดคำสั่งของ MIPS มีคำสั่ง jump register (jr) สำหรับ jump ไปที่รีจีสเตอร์ที่กำหนด จากคำสั่ง
jr $ra
เป็นการ jump กลับมาที่โปรแกรมที่เป็นตัวเรียกฟังก์ชั่น หรือเรียกว่า caller ฟังก์ชั่นที่ถูกเรียกมีชื่อว่า callee ดังนั้นเมื่อทำการเรียกฟังก์ชั่น caller จะทำการเก็บค่าพารามิเตอร์ต่างๆ ที่ต้องการส่งผ่านลงในรีจีสเตอร์ $a0-$a3 และใช้คำสั่ง jal X ไปยังฟังก์ชั่น X ที่ต้องการเรียก เมื่อ callee ทำการประมวลผลจนเสร็จสิ้น callee จะเก็บค่าผลลัพธ์ไว้ใน $v0-$v1 และส่งคืนการควบคุมไปยังโปรแกรม caller โดยใช้คำสั่ง jr $ra