Presentation is loading. Please wait.

Presentation is loading. Please wait.

SPIM and MIPS programming. Review: Memory Organization Large single-dimension array A memory address is an index into the array Memory stores 8 bits in.

Similar presentations


Presentation on theme: "SPIM and MIPS programming. Review: Memory Organization Large single-dimension array A memory address is an index into the array Memory stores 8 bits in."— Presentation transcript:

1 SPIM and MIPS programming

2 Review: Memory Organization Large single-dimension array A memory address is an index into the array Memory stores 8 bits in each address Registers store 32 bits of information –For example: Li $t0, 0 lw $t0, 0($t1) –Then $t0 will contain the data of the first four memory locations bits of data

3 Review: Registers MIPS has 32 registers, each containing 32 bits Some registers are listed below –$zero:constant 0 –$at:reserved for the assembler –$v0 - $v1:function results –$a0 - $a3:function arguments –$t0 - $t9:temporary –$s0 - $s7:temporary

4 Arithmetic Instructions (1/2) Some instructions include: –Add –Subtract –Multiply –Divide Must break expression into simple operations –use temporary registers ( $t0 to $t9 ) to store intermediate results –use load to insert a value into a variable –use store to assign a value to a variable

5 Instructions InstructionMeaning –add $s1, $s2, $s3$s1 = $s2 + $s3 –sub $s1, $s2, $s3$s1 = $s2 – $s3 –lw $s1, 100($s2)$s1 = Memory[$s2+100] –sw $s1, 100($s2)Memory[$s2+100] = $s1

6 Global variables C programAssembly Program int variable = -42;.data variable:.word -42 int r1;r1:.space 4.space allocates empty space in bytes.word allocates 4-byte value followed by the value to store

7 Assember Directives All assembler directives have names that begin with a period (`.'). –Examples:.word w1 –allocate a 4-byte word.half h1 –allocate 2-bytes.byte b1 –allocate a single byte.ascii “hello" –allocate a sequence of bytes and store ASCII values.asciiz “hello" –allocate a sequence of bytes and store ASCII values. terminate string with 0 byte (end of string).float.double

8 Input/Output On real machines (including real MIPS computers), I/O is very complicated –usually handled by operating system In SPIM, I/O is managed by system calls –syscall instruction –SPIM suspends simulation to perform I/O, then resumes simulation

9 System calls Systems calls are used to interact with the user To make a system call –determine which service you want –put service’s call code in register $v0 –put arguments in registers $a0, $a1, etc. –execute the syscall instruction –results are in registers $v0, $v1

10 System calls

11 Input/Output: Numbers.data.data value:.space 4.text.textmain: li $v0, 5 #Syscall 5: read int li $v0, 5 #Syscall 5: read int syscall syscall sw $v0, value#Number is in $v0 sw $v0, value#Number is in $v0 li $v0, 1 #Syscall 1: print int li $v0, 1 #Syscall 1: print int lw $t0, value lw $t0, value mul $a0, $t0, $t0 #$a0 is what to print mul $a0, $t0, $t0 #$a0 is what to print syscall syscall li $v0, 10#Exit li $v0, 10#Exit syscall syscall

12 Input/Output: strings.data.data msg:.asciiz "Type a string: " buff:.space 20.text.textmain: li $v0, 4 # print string li $v0, 4 # print string la $a0, msg# $a0: address of string la $a0, msg# $a0: address of string syscall syscall li $v0, 8 # read string li $v0, 8 # read string la $a0, buff# $a0: max length of buffer la $a0, buff# $a0: max length of buffer li $a1, 20# $a1: max length of string li $a1, 20# $a1: max length of string syscall syscall li $v0, 4 li $v0, 4 la $a0, buff la $a0, buff syscall syscall li $v0, 10 # exit li $v0, 10 # exit syscall syscall

13


Download ppt "SPIM and MIPS programming. Review: Memory Organization Large single-dimension array A memory address is an index into the array Memory stores 8 bits in."

Similar presentations


Ads by Google