25.12.2012 Views

MIPS Assembly Language Programming

MIPS Assembly Language Programming

MIPS Assembly Language Programming

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CONTENTS iii<br />

4 The <strong>MIPS</strong> R2000 Instruction Set 55<br />

4.1 A Brief History of RISC . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

4.2 <strong>MIPS</strong> Instruction Set Overview . . . . . . . . . . . . . . . . . . . . . 56<br />

4.3 The <strong>MIPS</strong> Register Set . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

4.4 The <strong>MIPS</strong> Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

4.4.1 Arithmetic Instructions . . . . . . . . . . . . . . . . . . . . . . 59<br />

4.4.2 Comparison Instructions . . . . . . . . . . . . . . . . . . . . . 60<br />

4.4.3 Branch and Jump Instructions . . . . . . . . . . . . . . . . . . 60<br />

4.4.3.1 Branch . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

4.4.3.2 Jump . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

4.4.4 Load, Store, and Data Movement . . . . . . . . . . . . . . . . 61<br />

4.4.4.1 Load . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

4.4.4.2 Store . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

4.4.4.3 Data Movement . . . . . . . . . . . . . . . . . . . . . 63<br />

4.4.5 Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

4.5 The SPIM Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

4.5.1 Segment and Linker Directives . . . . . . . . . . . . . . . . . . 64<br />

4.5.2 Data Directives . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

4.6 The SPIM Environment . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

4.6.1 SPIM syscalls . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

4.7 The Native <strong>MIPS</strong> Instruction Set . . . . . . . . . . . . . . . . . . . . 65<br />

4.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

4.8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

5 <strong>MIPS</strong> <strong>Assembly</strong> Code Examples 69<br />

5.1 add2.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

5.2 hello.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

5.3 multiples.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />

5.4 palindrome.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

5.5 atoi-1.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />

5.6 atoi-4.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

5.7 printf.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

5.8 fib-o.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

5.9 treesort.asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!