MIPS Assembly Language Chapter 15 S. Dandamudi. 2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer, 2003.

Slides:



Advertisements
Similar presentations
Integer Arithmetic: Multiply, Divide, and Bitwise Operations
Advertisements

CS/COE0447 Computer Organization & Assembly Language
Deeper Assembly: Addressing, Conditions, Branching, and Loops
MIPS Assembly Language Programming
The University of Adelaide, School of Computer Science
Informationsteknologi Saturday, September 29, 2007 Computer Architecture I - Class 41 Today’s class More assembly language programming.
Comp Sci instruction encoding 1 Instruction Encoding MIPS machine language Binary encoding of instructions MIPS instruction = 32 bits Three instruction.
1 Lecture 3a: Supplemental Notes for Chapter 3 CS 447 Jason Bakos.
Chapter 3: Instructions
MIPS Assembler Programming
S. Barua – CPSC 440 CHAPTER 2 INSTRUCTIONS: LANGUAGE OF THE COMPUTER Goals – To get familiar with.
Lecture 5 Sept 14 Goals: Chapter 2 continued MIPS assembly language instruction formats translating c into MIPS - examples.
ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 6: Logic/Shift Instructions Partially adapted from Computer Organization and Design, 4.
MIPS on FLEET Amir Kamil. Goals Run most MIPS assembly code on FLEET  Attempt to duplicate level of support in SPIM interpreter  MIPS assembly translated.
L6 – Simulator 1 Comp 411 – Fall /12/06 Adventures in Assembly Land What is an Assembler ASM Directives ASM Syntax Intro to SPIM Simple examples.
L5 – Simulator 1 Comp 411 – Fall /16/09 Adventures in Assembly Land What is an Assembler ASM Directives ASM Syntax Intro to SPIM/MARS Simple examples.
IT253: Computer Organization Lecture 5: Assembly Language and an Introduction to MIPS Tonga Institute of Higher Education.
CSE378 Instr. encoding.1 Instruction encoding The ISA defines –The format of an instruction (syntax) –The meaning of the instruction (semantics) Format.
CSCI 136 Lab 1: 135 Review.
FAMU-FSU College of Engineering 1 Computer Architecture EEL 4713/5764, Spring 2006 Dr. Michael Frank Module #7 – MIPS ISA, part 2: Procedures and Data.
Chapter 10 The Assembly Process. What Assemblers Do Translates assembly language into machine code. Assigns addresses to all symbolic labels (variables.
Computer Organization and Design Assembly & Simulation
Informationsteknologi Friday, September 28, 2007Computer Architecture I - Class 21 Today’s class More assembly language programming.
True Assembly Language Part I. The Assembly Process The process of translating a MAL code (an assembly language program) into machine code (a sequence.
Computer Organization and Design Assembly & Simulation Montek Singh Mon, Feb 7, 2011 Lecture 5.
MIPS Assembly Language Chapter 13 S. Dandamudi To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer,
Chapter 2 — Instructions: Language of the Computer — 1 Conditional Operations Branch to a labeled instruction if a condition is true – Otherwise, continue.
CMPUT Computer Organization and Architecture I1 CMPUT229 - Fall 2003 Topic6: Logic, Multiply and Divide Operations José Nelson Amaral.
CDA 3101 Spring 2016 Introduction to Computer Organization
Computer Organization and Design Assembly & Simulation Montek Singh Wed, Sep 26, 2012 Lecture 7.
Computer Organization and Design Assembly & Simulation Montek Singh Feb 22, 2016 Lecture 6.
Pirouz Bazargan SabetDecember 2003 Effective Implementation of a 32-bit RISC Processor Pirouz Bazargan Sabet University of Paris 6 - LIP6 - ASIM
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
Intro Assembly Computer Organization I 1 June 2010 © McQuain, Feng & Ribbens MIPS Hello World # Program: Hello, World!.data # data declaration.
Instructor: Prof. Hany H Ammar, LCSEE, WVU
Deeper Assembly: Addressing, Conditions, Branching, and Loops
Computer Architecture Instruction Set Architecture
Computer Organization and Design Assembly & Simulation
Computer Organization and Design Instruction Sets - 2
Computer Organization and Design Instruction Sets - 2
These are slides from Comp411
32-bit MIPS ISA.
ENGR 3410 – Computer Architecture Mark L. Chang Fall 2006
Computer Organization and Design Instruction Sets
CSCE 212 Chapter 2: Instruction Set Architecture
Adventures in Assembly Land
Instructions - Type and Format
Appendix A Classifying Instruction Set Architecture
Control Flow and Arrays
MPIS Instructions Functionalities of instructions Instruction format
ECE232: Hardware Organization and Design
Computer Organization and Design Assembly & Simulation
Instruction encoding The ISA defines Format = Encoding
Review.
Part II Instruction-Set Architecture
MIPS Instruction Set Architecture
Flow of Control -- Conditional branch instructions
UCSD ECE 111 Prof. Farinaz Koushanfar Fall 2018
Assembly and Simulation
MIPS Assembly.
Flow of Control -- Conditional branch instructions
CS352H Computer Systems Architecture
Generalities for Assembly Language
Reduced Instruction Set Computer (RISC)
Adventures in Assembly Land
MIPS Assembly Language Programming Computer Architecture
MIPS Arithmetic and Logic Instructions
Adventures in Assembly Land
MIPS Arithmetic and Logic Instructions
Control Flow and Arrays
Presentation transcript:

MIPS Assembly Language Chapter 15 S. Dandamudi

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 4 MIPS Processor Architecture (cont’d)

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 5 MIPS Processor Architecture (cont’d) MIPS registers and their conventional usage

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 7 Memory Usage Placement of segments allows sharing of unused memory by both data and stack segments

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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  Pseudoinstructions la Rdest,address li Rdest,imm »Implemented as ori Rdest,$0,imm

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 10 MIPS Instruction Set (cont’d)  Store byte sb Rsrc,address »Use sh and sw for halfwords and words  Pseudoinstruction move 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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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  Pseudoinstruction add Rdest,Rsrc1,Src2 Register or imm16

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 12 MIPS Instruction Set (cont’d)  Subtract sub 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,Src2 Register or imm16

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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,Rsrc skip: Constant 8 is used

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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 Rdest mflo Rdest  Pseudoinstruction mul Rdest,Rsrc1,Rsrc2 –32-bit result in Rdest  64-bit result is not available Register or imm

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 15 MIPS Instruction Set (cont’d)  mul is implemented as »If Rsrc2 is a register mult Rsrc1,Src2 mflo Rdest »If Rsrc2 is an immediate value (say 32) ori $1,$0,32 mult $5,$1 mflo $4 a0 = $4 a1 = $5 at = $1

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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  Pseudoinstruction div Rdest,Rsrc1,Src2 –quotient in Rdest rem Rdest,Rsrc1,Src2 –remainder in Rdest Register or imm

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 17 MIPS Instruction Set (cont’d) Logical instructions  Support AND, OR, XOR, NOR and Rdest,Rsrc1,Rsrc2 andi 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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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)

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 19 MIPS Instruction Set (cont’d) Rotate instructions  These are pseudoinstructions rol Rdest,Rsrc1,Src2 ror Rdest,Rsrc1,Src2 »Example: ror $t2,$t2,31 is translated as sll $1,$10,31 srl $10,$10,1 or $10,$10,$1 t2 = $10

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 21 MIPS Instruction Set (cont’d) Comparison instructions »Example: seq $a0,$a1,$a2 is translated as beq $6,$5,skip1 ori $4,$0,0 beq $0,$0,skip2 skip1: ori $4,$0,1 skip2: a0 = $4 a1 = $5 a2 = $6

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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 pseudoinstruction b target »Uses 16-bit relative address  Conditional branches beq Rsrc1,Rsrc2,target »Jumps to target if Rsrc1 = Rsrc2

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 23 MIPS Instruction Set (cont’d)  Other branch instructions bne blt, bltu bgt, bgtu ble, bleu bge, bgeu  Comparison with zero beqz Rsrc,target »Branches to target if Rsrc = 0 »Others –bnez, bltz, bgtz, blez, bgez »b target is implemented as bgez $0,target

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 25 SPIM System Calls (cont’d)

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 26 SPIM System Calls (cont’d).DATA prompt:.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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 27 SPIM Assembler Directives Segment declaration  Code:.TEXT.TEXT  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 multiple ASCIIZ “string statements.”

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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 2 n byte boundary »To turn off alignment, use.ALIGN 0 .GLOBL declares a symbol global.TEXT.GLOBL main main:...

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 31 Procedures Two instructions  Procedure call »jal (jump and link) jal proc_name  Return from a procedure jr $ra Parameter passing –Via registers –Via the stack Examples »min-_max.asm »str_len.asm

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  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 stack sw $a0,0($sp) #save registers sw $ra,4($sp)  pop operation lw $a0,0($sp) #restore registers lw $a0,4($sp) addu $sp,$sp,8 #clear 8 bytes of stack

2003 To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S. Dandamudi Chapter 15: Page 33 Illustrative Examples Passing variable number of parameters to a procedure var_para.asm Recursion examples Factorial.asm Quicksort.asm Last slide