CS 61C L17Introduction to MIPS: Instruction Representation III (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia www.cs.berkeley.edu/~ddgarcia inst.eecs.berkeley.edu/~cs61c.

Slides:



Advertisements
Similar presentations
Lecturer PSOE Dan Garcia
Advertisements

Lecture 5: MIPS Instruction Set
Wannabe Lecturer Alexandre Joly inst.eecs.berkeley.edu/~cs61c-te
IT253: Computer Organization Lecture 6: Assembly Language and MIPS: Programming Tonga Institute of Higher Education.
CS61C L17 Introduction to MIPS: Instruction Representation III (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L13Introduction to MIPS: Instruction Representation I (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS2100 Computer Organisation MIPS Part III: Instruction Formats (AY2014/2015) Semester 2.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 08 MIPS Instruction Representation I Lecturer SOE Dan Garcia
CS61C L10 : MIPS Instruction Representation II (1) Pearce, Summer 2010 © UCB inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 MIPS.
CS61C L18 Running a Program I (1) Garcia, Spring 2007 © UCB Router Security Hole!  Huge security hole has been found – if you have a home router, crackers.
CS61C L14 Introduction to MIPS: Instruction Representation II (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L09 Instruction Format (1) A Carle, Summer 2005 © UCB inst.eecs.berkeley.edu/~cs61c/su05 CS61C : Machine Structures Lecture #9: MIPS Instruction.
Instruction Representation III (1) Fall 2007 Lecture 11: Disassembly and Pseudo-instructions.
CS61C L14 MIPS Instruction Representation II (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L12 Pseudo (1) A Carle, Summer 2006 © UCB inst.eecs.berkeley.edu/~cs61c/su06 CS61C : Machine Structures Lecture #12: FP II & Pseudo Instructions.
CS61C L10 Introduction to MIPS : Decisions II (1) Garcia, Fall 2006 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61C L13 MIPS Instruction Representation I (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L09 Introduction to MIPS: Data Transfer & Decisions I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61C L12 Floating Point II, MIPS Instruction Format III (1) Chae, Summer 2008 © UCB Albert Chae, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine.
Instruction Representation II (1) Fall 2007 Lecture 10: Instruction Representation II.
CS61C L10 Introduction to MIPS : Decisions II (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L14Introduction to MIPS: Instruction Representation II (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
New Direction Service Announced
CS 61C L17 Introduction to MIPS: Instruction Representation III (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L02 Number Representation (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
CS61C L13 Introduction to MIPS: Instruction Representation I (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
1 Lecture 2: MIPS Instruction Set Today’s topic:  MIPS instructions Reminder: sign up for the mailing list cs3810 Reminder: set up your CADE accounts.
Decoding Machine Language 反組譯 Jen-Chang Liu, Spring 2006 Adapted from
CS61C L16 Floating Point II (1) Garcia, Fall 2006 © UCB Search your code!  Google just released new /* Code Search */, which allows you to specify regular.
1 Texas A&M University Computer Science Department CPSC 321 Computer Organization ISA Part II Logical and Shift Operations Instruction Representation Instructor:
Lecture 5 Sept 14 Goals: Chapter 2 continued MIPS assembly language instruction formats translating c into MIPS - examples.
Instruction Representation II (1) Fall 2005 Lecture 10: Instruction Representation II.
CS 61C L21 Caches II (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine.
CS61C L11 MIPS Instruction Rep III, Running a Program I (1) Garcia, Fall 2005 © UCB Lecturer PSOE, new dad Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61C L09 Introduction to MIPS : Data Transfer and Decisions (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61C L14 MIPS Instruction Representation II (1) Garcia, Fall 2006 © UCB Intel: 80 cores/chip in 5 yrs!  At their developer’s forum in SF on Tuesday,
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 14 MIPS Instruction Representation II IBM wants to use “self-assembling”
Csci 136 Computer Architecture II – MIPS Instruction Set Architecture
1 CS/COE0447 Computer Organization & Assembly Language Chapter 2 Part 1 In-Class Lab Session (Lab 2)
CS61CL L03 MIPS II: Procedures, Representation (1) Huddleston, Summer 2009 © UCB Jeremy Huddleston inst.eecs.berkeley.edu/~cs61c CS61CL : Machine Structures.
Chapter 10 The Assembly Process. What Assemblers Do Translates assembly language into machine code. Assigns addresses to all symbolic labels (variables.
Lecture 4: MIPS Instruction Set
L10 Instruction Representation III (1) Search your code!  Google just released new /* Code Search */, which allows you to specify regular expressions.
CS61C L17 MIPS Instruction Format III (1) Spring 2010 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C :
IFT 201: Unit 1 Lecture 1.3: Processor Architecture-3
9/29: Lecture Topics Conditional branch instructions
CENG 311 Instruction Representation
EET 4250 Instruction Representation & Formats Acknowledgements: Some slides and lecture notes for this course adapted from Prof. Mary Jane Penn.
Dan Garcia 1 CS 61C: Great Ideas in Computer Architecture MIPS Instruction Representation II.
Lecture 16: 10/29/2002CS170 Fall CS170 Computer Organization and Architecture I Ayman Abdel-Hamid Department of Computer Science Old Dominion University.
Control Structures Computer Organization I 1 October 2009 © McQuain, Feng & Ribbens Conditional Control Structure if ( i < j ) goto A; else.
COMPUTER ARCHITECTURE & OPERATIONS I Instructor: Yaohang Li.
CS/COE0447 Computer Organization & Assembly Language Chapter 2 Part 1 In-Class Lab Session (Lab 2) Answer Key.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
Instructor: Dr. Mike Turi Department of Computer Science and Computer Engineering Pacific Lutheran University Lecture slides adapted from Part 8, EE 334.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 08 MIPS Instruction Representation I Guest Lecturer Alan Christopher
Inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 14 – Introduction to MIPS Instruction Representation II Lecturer PSOE.
Lecture 4: MIPS Instruction Set
youtube.com/watch?v=hy0ptZisr70
Lecturer PSOE Dan Garcia
“Full Throttled” TA Brian Nguyen inst.eecs.berkeley.edu/~cs61c-tc
Lecture 4: MIPS Instruction Set
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 12 Instruction Format III and Compilation Instructor Paul Pearce.
Inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 17 – Introduction to MIPS Instruction Representation III Lecturer PSOE.
Instruction encoding The ISA defines Format = Encoding
Instructions and Conditional Execution
CS61C : Machine Structures Lecture 3. 1
Lecturer SOE Dan Garcia
Lecturer PSOE Dan Garcia
Inst.eecs.berkeley.edu/~cs61c/su05 CS61C : Machine Structures Lecture #11: FP II & Pseudo Instructions Andy Carle Greet class.
Presentation transcript:

CS 61C L17Introduction to MIPS: Instruction Representation III (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 17 – Introduction to MIPS Instruction Representation III Extremely cool   speaker technology! The $16,000/pair Bang & Olufsen adjusts to accommodate for your room layout! Mikes+sensors.

CS 61C L17Introduction to MIPS: Instruction Representation III (2) Garcia, Spring 2004 © UCB Outline Disassembly Pseudoinstructions and “True” Assembly Language (TAL) v. “MIPS” Assembly Language (MAL)

CS 61C L17Introduction to MIPS: Instruction Representation III (3) Garcia, Spring 2004 © UCB Decoding Machine Language How do we convert 1s and 0s to C code? Machine language  C? For each 32 bits: Look at opcode : 0 means R-Format, 2 or 3 mean J-Format, otherwise I-Format. Use instruction type to determine which fields exist. Write out MIPS assembly code, converting each field to name, register number/name, or decimal/hex number. Logically convert this MIPS code into valid C code. Always possible? Unique?

CS 61C L17Introduction to MIPS: Instruction Representation III (4) Garcia, Spring 2004 © UCB Decoding Example (1/7) Here are six machine language instructions in hexadecimal: hex A hex hex hex 20A5FFFF hex hex Let the first instruction be at address 4,194,304 ten (0x hex ). Next step: convert hex to binary

CS 61C L17Introduction to MIPS: Instruction Representation III (5) Garcia, Spring 2004 © UCB Decoding Example (2/7) The six machine language instructions in binary: Next step: identify opcode and format 1, 4-31 rsrtimmediate 0rsrtrdfunctshamt R I J target address 2 or 3

CS 61C L17Introduction to MIPS: Instruction Representation III (6) Garcia, Spring 2004 © UCB Decoding Example (3/7) Select the opcode (first 6 bits) to determine the format: Look at opcode : 0 means R-Format, 2 or 3 mean J-Format, otherwise I-Format. Next step: separation of fields R R I R I J Format:

CS 61C L17Introduction to MIPS: Instruction Representation III (7) Garcia, Spring 2004 © UCB Decoding Example (4/7) Fields separated based on format/opcode: ,048,577 Next step: translate (“disassemble”) to MIPS assembly instructions R R I R I J Format:

CS 61C L17Introduction to MIPS: Instruction Representation III (8) Garcia, Spring 2004 © UCB Decoding Example (5/7) MIPS Assembly (Part 1): Address:Assembly instructions: 0x or $2,$0,$0 0x slt $8,$0,$5 0x beq $8,$0,3 0x c add $2,$2,$4 0x addi $5,$5,-1 0x j 0x Better solution: translate to more meaningful MIPS instructions (fix the branch/jump and add labels, registers)

CS 61C L17Introduction to MIPS: Instruction Representation III (9) Garcia, Spring 2004 © UCB Decoding Example (6/7) MIPS Assembly (Part 2): or $v0,$0,$0 Loop:slt $t0,$0,$a1 beq $t0,$0,Exit add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop Exit: Next step: translate to C code (be creative!)

CS 61C L17Introduction to MIPS: Instruction Representation III (10) Garcia, Spring 2004 © UCB Decoding Example (7/7) After C code (Mapping below) $v0 : product $a0 : multiplicand $a1 : multiplier product = 0; while (multiplier > 0) { product += multiplicand; multiplier -= 1; } Before Hex: hex A hex hex hex 20A5FFFF hex hex Demonstrated Big 61C Idea: Instructions are just numbers, code is treated like data or $v0,$0,$0 Loop: slt $t0,$0,$a1 beq $t0,$0,Exit add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop Exit:

CS 61C L17Introduction to MIPS: Instruction Representation III (11) Garcia, Spring 2004 © UCB Administrivia Midterm in one week (Monday eve) 7pm-10pm in 155 Dwinelle Review session details announced

CS 61C L17Introduction to MIPS: Instruction Representation III (12) Garcia, Spring 2004 © UCB Upcoming Calendar Week #MonWedThurs LabFri #7 This week Dan MIPS Inst Format III Alexandre Running Program (No Dan OH) Running Program (No Dan OH) Roy Running Program #8 Next week Dan Caches 7pm Dan CachesCaches Dan Caches

CS 61C L17Introduction to MIPS: Instruction Representation III (13) Garcia, Spring 2004 © UCB Review from before: lui So how does lui help us? Example: addi $t0,$t0, 0xABABCDCD becomes: lui $at, 0xABAB ori $at, $at, 0xCDCD add $t0,$t0,$at Now each I-format instruction has only a 16- bit immediate. Wouldn’t it be nice if the assembler would this for us automatically? -If number too big, then just automatically replace addi with lui, ori, add

CS 61C L17Introduction to MIPS: Instruction Representation III (14) Garcia, Spring 2004 © UCB True Assembly Language (1/3) Pseudoinstruction: A MIPS instruction that doesn’t turn directly into a machine language instruction, but into other MIPS instrucitons What happens with pseudoinstructions? They’re broken up by the assembler into several “real” MIPS instructions. But what is a “real” MIPS instruction? Answer in a few slides First some examples

CS 61C L17Introduction to MIPS: Instruction Representation III (15) Garcia, Spring 2004 © UCB Example Pseudoinstructions Register Move movereg2,reg1 Expands to: addreg2,$zero,reg1 Load Immediate lireg,value If value fits in 16 bits: addireg,$zero,value else: luireg,upper 16 bits of value orireg,$zero,lower 16 bits

CS 61C L17Introduction to MIPS: Instruction Representation III (16) Garcia, Spring 2004 © UCB True Assembly Language (2/3) Problem: When breaking up a pseudoinstruction, the assembler may need to use an extra reg. If it uses any regular register, it’ll overwrite whatever the program has put into it. Solution: Reserve a register ( $1, called $at for “assembler temporary”) that assembler will use to break up pseudo-instructions. Since the assembler may use this at any time, it’s not safe to code with it.

CS 61C L17Introduction to MIPS: Instruction Representation III (17) Garcia, Spring 2004 © UCB Example Pseudoinstructions Rotate Right Instruction rorreg, value Expands to: srl$at, reg, value sllreg, reg, 32-value orreg, reg, $at 0 0 No operation instruction nop Expands to instruction = 0 ten, sll$0, $0, 0

CS 61C L17Introduction to MIPS: Instruction Representation III (18) Garcia, Spring 2004 © UCB Example Pseudoinstructions Wrong operation for operand addureg,reg,value # should be addiu If value fits in 16 bits, addu is changed to: addiureg,reg,value else: lui$at,upper 16 bits of value ori$at,$zero,lower 16 bits addureg,reg,$at How do we avoid confusion about whether we are talking about MIPS assembler with or without pseudoinstructions?

CS 61C L17Introduction to MIPS: Instruction Representation III (19) Garcia, Spring 2004 © UCB True Assembly Language (3/3) MAL (MIPS Assembly Language): the set of instructions that a programmer may use to code in MIPS; this includes pseudoinstructions TAL (True Assembly Language): set of instructions that can actually get translated into a single machine language instruction (32-bit binary string) A program must be converted from MAL into TAL before translation into 1s & 0s.

CS 61C L17Introduction to MIPS: Instruction Representation III (20) Garcia, Spring 2004 © UCB Questions on Pseudoinstructions Question: How does MIPS recognize pseudo- instructions? Answer: It looks for officially defined pseudo- instructions, such as ror and move It looks for special cases where the operand is incorrect for the operation and tries to handle it gracefully

CS 61C L17Introduction to MIPS: Instruction Representation III (21) Garcia, Spring 2004 © UCB Rewrite TAL as MAL TAL: or $v0,$0,$0 Loop:slt $t0,$0,$a1 beq $t0,$0,Exit add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop Exit: This time convert to MAL OK for this exercise to make up MAL instructions

CS 61C L17Introduction to MIPS: Instruction Representation III (22) Garcia, Spring 2004 © UCB Rewrite TAL as MAL (Answer) TAL: or $v0,$0,$0 Loop:slt $t0,$0,$a1 beq $t0,$0,Exit add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop Exit: MAL: li $v0,0 Loop:bge $zero,$a1,Exit add $v0,$v0,$a0 sub $a1,$a1,1 j Loop Exit:

CS 61C L17Introduction to MIPS: Instruction Representation III (23) Garcia, Spring 2004 © UCB Peer Instruction Which of the instructions below are TAL and which are MAL? A.addi $t0, $t1, B.beq $s0, 10, Exit C.sub $t0, $t1, 1 ABC 1: MMM 2: MMT 3: MTM 4: MTT 5: TMM 6: TMT 7: TTM 8: TTT

CS 61C L17Introduction to MIPS: Instruction Representation III (24) Garcia, Spring 2004 © UCB Peer Instruction Which of the codes below are pseudo- instructions (MIPS Assembly Language); that is, they are not TAL? i. addi $t0, $t1, ii. beq $s0, 10, Exit iii. sub $t0, $t1, 1 40,000 > +32,767 => lui, ori sub: both must be registers; even if it was subi, there is no subi in TAL; generates addi $t0,$t1, -1 Beq: both must be registers Exit: if > 2 15, then MAL ABC 1: MMM 2: MMT 3: MTM 4: MTT 5: TMM 6: TMT 7: TTM 8: TTT

CS 61C L17Introduction to MIPS: Instruction Representation III (25) Garcia, Spring 2004 © UCB In conclusion Disassembly is simple and starts by decoding opcode field. Be creative, efficient when authoring C Assembler expands real instruction set (TAL) with pseudoinstructions (MAL) Only TAL can be converted to raw binary Assembler’s job to do conversion Assembler uses reserved register $at MAL makes it much easier to write MIPS