MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals...
-
Upload
malcolm-jenkins -
Category
Documents
-
view
217 -
download
0
description
Transcript of MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals...
![Page 1: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/1.jpg)
MIPS Assembly Language
Chapter 15S. Dandamudi
![Page 2: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/2.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 2
Outline
• MIPS architecture Registers Addressing modes
• MIPS instruction set Instruction format Data transfer instructions Arithmetic instructions Logical/shift/rotate/
compare instructions Branch and jump
instructions
• SPIM system calls• SPIM assembler directive• Illustrative examples• Procedures• Stack implementation• Illustrative examples
![Page 3: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/3.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 3
MIPS Processor Architecture
• MIPS follows RISC principles much more closely than PowerPC and Itanium Based on the load/store architecture
• Registers 32-general purpose registers ($0 – $31)
» $0 – hardwired to zero» $31 – used to store return address
Program counter (PC)» Like IP in Pentium
Two special-purpose registers (HI and LO)» Used in multiply and divide instructions
![Page 4: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/4.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 4
MIPS Processor Architecture (cont’d)
![Page 5: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/5.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 5
MIPS Processor Architecture (cont’d)MIPS registers and their conventional usage
![Page 6: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/6.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 6
MIPS Processor Architecture (cont’d)
MIPS addressing modes Bare machine supports only a single addressing mode
disp(Rx) Virtual machine provides several additional addressing modes
![Page 7: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/7.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 7
Memory Usage
Placement of segments allows sharing of unused memory by both data and stack segments
![Page 8: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/8.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 8
Instruction Format
load, arithmetic/logical with immediate operands
Higher order bits from PC are added to get absolute address
![Page 9: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/9.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 9
MIPS Instruction Set
• Data transfer instructions Load and store instructions have similar format
ld Rdest,address» Moves a byte from address to Rdest as a signed number
– Sign-extended to Rdest» Use ldu for unsigned move (zero-extended)
Use lh, lhu, ld for moving halfwords (signed/unsigned) and words
Pseudoinstructionsla Rdest,addressli Rdest,imm » Implemented as ori Rdest,$0,imm
![Page 10: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/10.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 10
MIPS Instruction Set (cont’d)
Store bytesb Rsrc,address» Use sh and sw for halfwords and words
Pseudoinstructionmove Rdest,Rsrc» Copies Rsrc to Rdest
Four additional data movement instructions are available
» Related to HI and LO registers» Used with multiply and divide instructions
– Discussed later
![Page 11: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/11.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 11
MIPS Instruction Set (cont’d)
• Arithmetic instructions Addition
add Rdest,Rsrc1,Rsrc2– Rdest Rsrc1 + Rsrc2– Numbers are treated as signed integers– Overflow: Generates overflow exception– Use addu if the overflow exception is not needed
addi Rdest,Rsrc1,imm– imm: 16-bit signed number
Pseudoinstructionadd Rdest,Rsrc1,Src2
Register or imm16
![Page 12: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/12.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 12
MIPS Instruction Set (cont’d)
Subtractsub Rdest,Rsrc1,Rsrc2
– Rdest Rsrc1 Rsrc2– Numbers are treated as signed integers– Overflow: Generates overflow exception– Use subu if the overflow exception is not needed– No immediate version
Use addi with negative imm Pseudoinstruction
sub Rdest,Rsrc1,Src2Register or imm16
![Page 13: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/13.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 13
MIPS Instruction Set (cont’d) Pseudoinstructions
neg Rdest,Rsrc– Negates Rsrc (changes sign)– Implemented as
sub Rdest,$0,Rsrc
abs Rdest,Rsrc– Implemented as
bgez Rsrc,skip sub Rdest,$0,Rsrcskip:
Constant 8 is used
![Page 14: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/14.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 14
MIPS Instruction Set (cont’d) Multiply
» mult (signed)» multu (unsigned)
mult Rsrc1,Rsrc2» 64-bit result in LO and HI registers» Special data move instructions for LO/HI registers
mfhi Rdestmflo Rdest
Pseudoinstructionmul Rdest,Rsrc1,Rsrc2
– 32-bit result in Rdest 64-bit result is not available
Register or imm
![Page 15: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/15.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 15
MIPS Instruction Set (cont’d)
mul is implemented as» If Rsrc2 is a register
mult Rsrc1,Src2mflo Rdest
» If Rsrc2 is an immediate value (say 32)
ori $1,$0,32mult $5,$1mflo $4
a0 = $4a1 = $5at = $1
![Page 16: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/16.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 16
MIPS Instruction Set (cont’d) Divide
» div (signed)» divu (unsigned)
div Rsrc1,Rsrc2» Result = Rsrc1/Rsrc2» LO = quotient, HI = remainder» Result undefined if the divisor is zero
Pseudoinstructiondiv Rdest,Rsrc1,Src2
– quotient in Rdestrem Rdest,Rsrc1,Src2
– remainder in Rdest
Register or imm
![Page 17: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/17.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 17
MIPS Instruction Set (cont’d)
• Logical instructions Support AND, OR, XOR, NOR
and Rdest,Rsrc1,Rsrc2andi Rdest,Rsrc1,imm16
Also provides or, ori, xor, xori, nor No not instruction
» It is provided as a pseudoinstruction
not Rdest,Rsrc» Implemented as
nor Rdest,Rsrc,$0
![Page 18: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/18.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 18
MIPS Instruction Set (cont’d)
• Shift instructions Shift left logical
sll Rdest,Rsrc1,count» Vacated bits receive zeros» Shift left logical variable
sllv Rdest,Rsrc1,Rsrc2 » Shift count in Rsrc2
Two shift right instructions» Logical (srl, srlv)
– Vacated bits receive zeros» Arithmetic (sra, srav)
– Vacated bits receive the sign bit (sign-extended)
![Page 19: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/19.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 19
MIPS Instruction Set (cont’d)
• Rotate instructions These are pseudoinstructions
rol Rdest,Rsrc1,Src2ror Rdest,Rsrc1,Src2
» Example: ror $t2,$t2,31
is translated assll $1,$10,31srl $10,$10,1
or $10,$10,$1
t2 = $10
![Page 20: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/20.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 20
MIPS Instruction Set (cont’d)
• Comparison instructions All are pseudoinstructions
slt Rdest,Rsrc1,Rsrc2» Sets Rdest to 1 if Rsrc1 < Rsrc2» Unsigned version: sltu» Others:
–seq –sgt, sgtu –sge, sgeu–sle, sleu–sne
![Page 21: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/21.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 21
MIPS Instruction Set (cont’d)
• Comparison instructions» Example:
seq $a0,$a1,$a2is translated as beq $6,$5,skip1 ori $4,$0,0
beq $0,$0,skip2skip1: ori $4,$0,1skip2:
a0 = $4a1 = $5a2 = $6
![Page 22: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/22.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 22
MIPS Instruction Set (cont’d)
• Branch and Jump instructions Jump instruction
j target» Uses 26-bit absolute address
Branch pseudoinstructionb target
» Uses 16-bit relative address Conditional branches
beq Rsrc1,Rsrc2,target» Jumps to target if Rsrc1 = Rsrc2
![Page 23: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/23.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 23
MIPS Instruction Set (cont’d)
Other branch instructionsbneblt, bltubgt, bgtuble, bleubge, bgeu
Comparison with zerobeqz Rsrc,target
» Branches to target if Rsrc = 0» Others
– bnez, bltz, bgtz, blez, bgez» b target is implemented as bgez $0,target
![Page 24: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/24.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 24
SPIM System Calls
• SPIM supports I/O through syscall Data types:
» string, integer, float, double– Service code: $v0– Required arguments: $a0 and $a1– Return value: $v0
print_string » Prints a NULL-terminated string
read_string » Takes a buffer pointer and its size n» Reads at most n-1 characters in NULL-terminated string» Similar to fgets
![Page 25: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/25.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 25
SPIM System Calls (cont’d)
![Page 26: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/26.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 26
SPIM System Calls (cont’d)
.DATAprompt: .ASCIIZ “Enter your name: “in-name: .SPACE 31 .TEXT . . . la $a0,prompt li $v0,4 syscall la $a0,in_name li $a1,31 li $v0,8 syscall
![Page 27: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/27.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 27
SPIM Assembler Directives
• Segment declaration Code: .TEXT
.TEXT <address> Data: .DATA
• String directives .ASCII
» Not NULL-terminated .ASCIIZ
» Null-terminated
• Uninitialized space.SPACE n
Optional; if present, segment starts at that address
Example:ASCII “This is a very long string”ASCII “spread over multipleASCIIZ “string statements.”
![Page 28: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/28.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 28
SPIM Assembler Directives (cont’d)
• Data directives Provides four directives:
.HALF, .WORD.FLOAT, .DOUBLE
.HALF h1, h2, . . ., hn– Allocates 16-bit halfwords– Use .WORD for 32-bit words
» Floating-point numbers– Single-precision
.FLOAT f1, f2, . . . , fn– Use .DOUBLE for double-precision
![Page 29: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/29.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 29
SPIM Assembler Directives (cont’d)
• Miscellaneous directives Data alignment
» Default: – .HALF, .WORD, .FLOAT, .DOUBLE align data
» Explicit control:.ALIGN n
aligns the next datum on a 2n byte boundary» To turn off alignment, use
.ALIGN 0 .GLOBL declares a symbol global
.TEXT .GLOBL mainmain: . . .
![Page 30: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/30.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 30
Illustrative Examples
• Character to binary conversion binch.asm
• Case conversion toupper.asm
• Sum of digits – string version addigits.asm
• Sum of digits – number version addigits2.asm
![Page 31: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/31.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 31
Procedures
• Two instructions Procedure call
» jal (jump and link)jal proc_name
Return from a procedurejr $ra
• Parameter passing– Via registers– Via the stack
• Examples» min-_max.asm» str_len.asm
![Page 32: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/32.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 32
Stack Implementation
• No explicit support» No push/pop instructions» Need to manipulate stack pointer explicitly
– Stack grows downward as in Pentium Example: push registers a0 and ra
sub $sp,$sp,8 #reserve 8 bytes of stacksw $a0,0($sp) #save registerssw $ra,4($sp)
pop operationlw $a0,0($sp) #restore registerslw $a0,4($sp) addu $sp,$sp,8 #clear 8 bytes of stack
![Page 33: MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.](https://reader035.fdocuments.in/reader035/viewer/2022062413/5a4d1b627f8b9ab0599ae1ae/html5/thumbnails/33.jpg)
2003To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.
S. Dandamudi Chapter 15: Page 33
Illustrative Examples
• Passing variable number of parameters to a procedure
var_para.asm
• Recursion examplesFactorial.asmQuicksort.asm
Last slide