Presentation is loading. Please wait.

Presentation is loading. Please wait.

Fall 2003SYCS-401 Operating Systems Instruction Set Architecture An overview of MIPS R3000 assembly language.

Similar presentations


Presentation on theme: "Fall 2003SYCS-401 Operating Systems Instruction Set Architecture An overview of MIPS R3000 assembly language."— Presentation transcript:

1 Fall 2003SYCS-401 Operating Systems Instruction Set Architecture An overview of MIPS R3000 assembly language

2 Fall 2003SYCS-401 Operating Systems Overview Review of the concept of an Instruction SetArchitecture (ISA) Understand the format of MIPS assembly source files Be able to identify the registers of the R3000 and their purpose Be able to understand the effects of a subset of instructions of the MIPS R3000 Instruction Set Architecture (ISA)

3 Fall 2003SYCS-401 Operating Systems Opcodes and Operands add $a0, $t1, $t0 Opcode (Instruction) Operands (“arguments”)

4 Fall 2003SYCS-401 Operating Systems Simple Assembler Program.globl main.text main: # Program starts here. li $t0, 5 # Load the integer value 5 # into register t0 li $t1, 19# Load 19 into register t1 add $t2, $t1, $t0 # Add registers t0 and t1 # to produce t2 li $v0, 1 # Setup a print integer call # to print the result move $a0, $t2 syscall li $v0, 10 # Setup an exit call syscall # Do the exit thing Add the integers 5 and 19, and print the result. 8

5 Fall 2003SYCS-401 Operating Systems Instruction Set Architecture (ISA) Think of the ISA as the hardware/software interface In this lecture we look at some aspects of MIPS ISA, including: Some opcodes Required operands there are no implicit operands in MIPS Means of accessing RAM Number of registers Instruction format etc., etc.

6 Fall 2003SYCS-401 Operating Systems MIPS: ISA generations (‘I’ to ‘IV’) MIPS I (8 MHz, 32b architecture) R2000 (first commercial MIPS processor) MIPS II (40 MHz, 32b architecture) R3000 MIPS III (to 250 MHz pipeline, 64b architecture) R4x00 MIPS IV R8000 R10000 R5000

7 Fall 2003SYCS-401 Operating Systems

8 Fall 2003SYCS-401 Operating Systems MIPS Registers

9 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

10 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

11 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

12 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

13 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

14 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

15 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

16 Fall 2003SYCS-401 Operating Systems General-Purpose Registers

17 Fall 2003SYCS-401 Operating Systems MIPS opcode formats

18 Fall 2003SYCS-401 Operating Systems MIPS Instruction Categories Arithmetic instructions add, subtract, multiply, divide comparison Logical instructions Branch and jump instructions conditional (branch) unconditional (jump) Data transfer (load & store) instructions

19 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions add subtract multiply divide compare shift / rotate not covered here

20 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Add Registers ADD destinationReg, sourceReg, targetReg Destination  Source + Target

21 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Add Unsigned ADDU destinationReg, sourceReg, targetReg Destination  Source + Target

22 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Add Immediate ADDI destinationReg, sourceReg, targetReg Destination  Source + Target

23 Fall 2003SYCS-401 Operating Systems MIPS Opcode Map

24 Fall 2003SYCS-401 Operating Systems MIPS Opcode Map

25 Fall 2003SYCS-401 Operating Systems MIPS System Calls ( syscall )

26 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Divide Registers DIV sourceReg, targetReg $lo (quotient), $hi (remainder)  Source / Target

27 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Multiply Registers MUL sourceReg, targetReg $lo (low word), $hi (high word)  Source x Target

28 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Set if Less Than SLT destinationReg, sourceReg, targetReg Destination  Source < Target) ? 1 : 0

29 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: SLT Immediate SLTI destinationReg, sourceReg, immediate Destination  Source < immediate) ? 1 : 0

30 Fall 2003SYCS-401 Operating Systems Some other arithmetic instructions

31 Fall 2003SYCS-401 Operating Systems Logical Instructions Logical AND logical OR XOR NOT

32 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Logical AND AND destinationReg, sourceReg, targetReg Destination  Source AND Target

33 Fall 2003SYCS-401 Operating Systems Arithmetic Instructions: Logical OR OR destinationReg, sourceReg, targetReg Destination  Source OR Target

34 Fall 2003SYCS-401 Operating Systems Some other Logical instructions

35 Fall 2003SYCS-401 Operating Systems Branch and Jump Instructions These alter the (otherwise) linear flow of control. There are two main types of “go to” instruction unconditional ( always go to … ) > jump conditional ( if … then go to … ) > branch (indicating an alternative flow)

36 Fall 2003SYCS-401 Operating Systems Branch and Jump Instructions

37 Fall 2003SYCS-401 Operating Systems Jump Instructions: Jump J label Jump to instruction at label

38 Fall 2003SYCS-401 Operating Systems Jump Instructions: Jump & Link JAL label Place the address of the next instruction (PC + 4) in $ra. Jump to the instruction at ‘label’

39 Fall 2003SYCS-401 Operating Systems Jump Instructions: Jump & Link

40 Fall 2003SYCS-401 Operating Systems Branch Instructions: Branch on Equal BEQ sourceRegister, targetRegister, label If (sourceRegister == targetRegister) go to instruction at ‘label’

41 Fall 2003SYCS-401 Operating Systems Branch Instructions: Branch if Equal to Zero BEQZ sourceRegister, label If (sourceRegister == 0) go to instruction at ‘label’

42 Fall 2003SYCS-401 Operating Systems Some other Jump/Branch instructions

43 Fall 2003SYCS-401 Operating Systems Data transfer instructions MIPS is a load-and-store architecture The only instructions that access RAM are those\ which load to (or store from) registers Note that all other instructions operate on registers To change a value in memory, you must therefore: load it to a register alter it store it back in memory

44 Fall 2003SYCS-401 Operating Systems Data Transfer Instructions: Load Address LA destinationRegister, address destinationRegister  calculated address

45 Fall 2003SYCS-401 Operating Systems Data Transfer Instructions: Load Immediate LI destinationRegister, immediate destinationRegister  immediate value

46 Fall 2003SYCS-401 Operating Systems Data Transfer Instructions: Move from HI MFHI destinationRegister destinationRegister  HI register

47 Fall 2003SYCS-401 Operating Systems Data Transfer Instructions: Load Byte LB targetRegister, label Load targetRegister with the byte value at address “label”

48 Fall 2003SYCS-401 Operating Systems Data Transfer Instructions: Store Byte SB targetRegister, label Store low byte value in targetRegister at address “label”

49 Fall 2003SYCS-401 Operating Systems Data Transfer Instructions: Load Word LW targetRegister, label Load targetRegister with the word value at address “label”

50 Fall 2003SYCS-401 Operating Systems Data Transfer Instructions: Move MOVE destinationRegister, sourceRegister destinationRegister  sourceRegister

51 Fall 2003SYCS-401 Operating Systems Some other Data Transfer instructions

52 Fall 2003SYCS-401 Operating Systems Assembler directives: Examples

53 Fall 2003SYCS-401 Operating Systems Template.s

54 Fall 2003SYCS-401 Operating Systems Example.s

55 Fall 2003SYCS-401 Operating Systems Assembler Syntax Comments begin with a ‘#’ and continue to the end of the line Identifiers identifier  { a-z A-Z _. } { a-z A-Z _. 0-9 }* Label declaration (follow by a colon) identifier: Strings (use double quotes; special characters use backslash) “ \t \“Hello World\” is \nthe usual example!”

56 Fall 2003SYCS-401 Operating Systems High Level Language Constructs How do we code if-then, if-then-else, while, do-while, for, and switch statements. Examples: Assume The existence of a 32b integer (labelled ‘x’) is assumed:.data x:.word 0

57 Fall 2003SYCS-401 Operating Systems If Construct

58 Fall 2003SYCS-401 Operating Systems If Construct

59 Fall 2003SYCS-401 Operating Systems If Construct

60 Fall 2003SYCS-401 Operating Systems Post-Test Loop

61 Fall 2003SYCS-401 Operating Systems Post-Test Loop

62 Fall 2003SYCS-401 Operating Systems Simple Assembler Program.globl main.text main: # Program starts here. li $t0, 5 # Load the integer value 5 # into register t0 li $t2, $a0# set t2 = 0 start: bgtz $t0, done# if t0 <= 0 then goto done add $t2, $t2, $t0 # Add registers t0 and t1 # to produce t2 subi $t0, t0, 1# t0 = t0 - 1 j start done: li $v0, 1 # Setup a print integer call # to print the result move $a0, $t2 syscall li $v0, 10 # Setup an exit call syscall # Do the exit thing

63 Fall 2003SYCS-401 Operating Systems Assembly vs. High-Level Languages (HLLs)

64 Fall 2003SYCS-401 Operating Systems Producing an Executable

65 Fall 2003SYCS-401 Operating Systems Procedure Calls The terminology tends to be rather loose. One view: functions return values whereas procedures do not Here the terms are used interchangeably

66 Fall 2003SYCS-401 Operating Systems Link Instructions Link instructions leave a return address on register $ra (31) This is the address of the next instruction, PC + 4. Unconditional (jump and link) jal Conditional (branch and link) b*al bgezal, bltzal, etc.

67 Fall 2003SYCS-401 Operating Systems Returning from a procedure There is a “jump register” instruction that jumps to the address held in the specified register Typical use: jr $ra Note, however, that the specified register does not need to be $ra

68 Fall 2003SYCS-401 Operating Systems Procedure Calls

69 Fall 2003SYCS-401 Operating Systems Passing function arguments Recall the register conventions that MIPS uses $a0 - $a3 are used for passing arguments Arguments must be simple There is a limit of 4 by this convention Greater demands than these are met by use of the stack

70 Fall 2003SYCS-401 Operating Systems Returning values Register conventions also specify that registers $v0 - $v1 may be used for returning values from a function Similar constraints apply to argument- passing

71 Fall 2003SYCS-401 Operating Systems The Stack

72 Fall 2003SYCS-401 Operating Systems Uses of the stack Save registers that are meant to be preserved by the calling code. Pass complex arguments to a procedure Use for local variables variables with local scope that are destroyed once the procedure has completed

73 Fall 2003SYCS-401 Operating Systems Procedure Call Conceptually

74 Fall 2003SYCS-401 Operating Systems Caller Template (Calling the function) Pass arguments to the function first 4 arguments use registers $a0 - $a3 more arguments must use the stack Save any important values that are held in temporary registers Execute jump/branch and link instruction

75 Fall 2003SYCS-401 Operating Systems Called template (Start) Make room on the stack subi $sp, $sp, Why subtraction? Store any registers of interest $ra if your routine makes a function call Why? Any $s0-$s7 registers that will be used Why?

76 Fall 2003SYCS-401 Operating Systems Called template (Finish) Make returned values available Put in $v0, $v1 Restore any registers that were saved $ra, $s0-$s7 Pop the stack addi $sp, $sp, Return jr $ra

77 Fall 2003SYCS-401 Operating Systems Caller template (Returning from the function) Handle results, if any registers $v0, $v1 Restore saved values, if any

78 Fall 2003SYCS-401 Operating Systems Example.s

79 Fall 2003SYCS-401 Operating Systems Sources Indigo image and specs http://www.sgi.com For the R2000 instruction set Patterson, D.A., & Hennesy, J.L., (1994). “ComputerOrganization and Design: The Hardware / Software Interface”, Morgan Kaufmann. (Appendix A) Available online at: http://www.cs.wisc.edu/~larus/SPIM/cod-appa.pdf For the R3000 instruction set http://www.xs4all.nl/~vhouten/mipsel/r3000-isa.html


Download ppt "Fall 2003SYCS-401 Operating Systems Instruction Set Architecture An overview of MIPS R3000 assembly language."

Similar presentations


Ads by Google