CS61C L17 MIPS Instruction Format III (1) Spring 2010 © UCB Lecturer SOE Dan Garcia www.cs.berkeley.edu/~ddgarcia inst.eecs.berkeley.edu/~cs61c CS61C :

Slides:



Advertisements
Similar presentations
1 Lecture 3: MIPS Instruction Set Today’s topic:  More MIPS instructions  Procedure call/return Reminder: Assignment 1 is on the class web-page (due.
Advertisements

Lecture 5: MIPS Instruction Set
Wannabe Lecturer Alexandre Joly inst.eecs.berkeley.edu/~cs61c-te
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.
CS 61C L17Introduction to MIPS: Instruction Representation III (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 L14 Introduction to MIPS: Instruction Representation II (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 13 MIPS Instruction Representation I Shanghai Jiaotong University and Lanxiang.
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.
releases HotSpotAtHome
CS61C L13 MIPS Instruction Representation I (1) Garcia, Spring 2007 © UCB Lecturer SOE 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.
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.
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.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 13 MIPS Instruction Representation I The National Science Foundation (NSF)
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”
1 Today  Finish-up procedures/stack  strlen example  Machine language, the binary representation for instructions. —We’ll see how it is designed for.
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)
inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 18 – Running a Program I (Compiling, Assembling, Linking, Loading)
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.
April 23, 2001Systems Architecture I1 Systems Architecture I (CS ) Lecture 9: Assemblers, Linkers, and Loaders * Jeremy R. Johnson Mon. April 23,
Instructor: Justin Hsia 7/03/2013Summer Lecture #71 CS 61C: Great Ideas in Computer Architecture MIPS Instruction Formats.
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.
IFT 201: Unit 1 Lecture 1.3: Processor Architecture-3
9/29: Lecture Topics Conditional branch instructions
ECE 15B Computer Organization Spring 2011 Dmitri Strukov Partially adapted from Computer Organization and Design, 4 th edition, Patterson and Hennessy,
CENG 311 Instruction Representation
EET 4250 Instruction Representation & Formats Acknowledgements: Some slides and lecture notes for this course adapted from Prof. Mary Jane Penn.
Addressing Modes. Register Addressing Immediate Addressing Base Addressing Indexed Addressing PC-Relative Addressing.
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.
CS 61C: Great Ideas in Computer Architecture MIPS Instruction Formats 1 Instructors: Vladimir Stojanovic and Nicholas Weaver
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:

CS61C L17 MIPS Instruction Format III (1) Spring 2010 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 17 Instruction Representation III Handling a mountain of data!  Microsoft Live Labs has released a tool to “make it easier to interact with massive amounts of data in ways that are powerful, informative and fun.” Imagine being able to look at all of wikipedia or flickr and filter/query very easily. getpivot.com Hello to Sherif Kandel listening from Egypt!

CS61C L17 MIPS Instruction Format III (2) Spring 2010 © UCB Review MIPS Machine Language Instruction: 32 bits representing a single instruction Branches use PC-relative addressing, Jumps use absolute addressing. opcodersrtimmediate opcodersrtrdfunctshamt R I J target address opcode

CS61C L17 MIPS Instruction Format III (3) Spring 2010 © UCB Outline Disassembly Pseudoinstructions “True” Assembly Language (TAL) vs. “MIPS” Assembly Language (MAL)

CS61C L17 MIPS Instruction Format III (4) Spring 2010 © UCB Decoding Machine Language How do we convert 1s and 0s to assembly language and to C code? Machine language  assembly  C? For each 32 bits: 1.Look at opcode to distinquish between R- Format, J-Format, and I-Format. 2.Use instruction format to determine which fields exist. 3.Write out MIPS assembly code, converting each field to name, register number/name, or decimal/hex number. 4.Logically convert this MIPS code into valid C code. Always possible? Unique?

CS61C L17 MIPS Instruction Format III (5) Spring 2010 © 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

CS61C L17 MIPS Instruction Format III (6) Spring 2010 © UCB Decoding Example (2/7) The six machine language instructions in binary: Next step: identify opcode and format 1, 4-62 rsrtimmediate 0rsrtrdfunctshamt R I J target address 2 or 3

CS61C L17 MIPS Instruction Format III (7) Spring 2010 © 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:

CS61C L17 MIPS Instruction Format III (8) Spring 2010 © 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:

CS61C L17 MIPS Instruction Format III (9) Spring 2010 © 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)

CS61C L17 MIPS Instruction Format III (10) Spring 2010 © 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 (must be creative!)

CS61C L17 MIPS Instruction Format III (11) Spring 2010 © 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:

CS61C L17 MIPS Instruction Format III (12) Spring 2010 © UCB Administrivia Midterm is in one week! 7-10pm in 1 Pimintel Old midterms online (link at top of page) Lectures and reading materials fair game Open book! Review session __ in __

CS61C L17 MIPS Instruction Format III (13) Spring 2010 © 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

CS61C L17 MIPS Instruction Format III (14) Spring 2010 © UCB True Assembly Language (1/3) Pseudoinstruction: A MIPS instruction that doesn’t turn directly into a machine language instruction, but into other MIPS instructions What happens with pseudo-instructions? They’re broken up by the assembler into several “real” MIPS instructions. Some examples follow

CS61C L17 MIPS Instruction Format III (15) Spring 2010 © 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

CS61C L17 MIPS Instruction Format III (16) Spring 2010 © UCB Example Pseudoinstructions Load Address: How do we get the address of an instruction or global variable into a register? lareg,label Again if value fits in 16 bits: addireg,$zero,label_value else: luireg,upper 16 bits of value orireg,$zero,lower 16 bits

CS61C L17 MIPS Instruction Format III (17) Spring 2010 © UCB True Assembly Language (2/3) Problem: When breaking up a pseudo-instruction, the assembler may need to use an extra register 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.

CS61C L17 MIPS Instruction Format III (18) Spring 2010 © 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

CS61C L17 MIPS Instruction Format III (19) Spring 2010 © 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,$at,lower 16 bits addureg,reg,$at How do we avoid confusion about whether we are talking about MIPS assembler with or without pseudoinstructions?

CS61C L17 MIPS Instruction Format III (20) Spring 2010 © 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.

CS61C L17 MIPS Instruction Format III (21) Spring 2010 © UCB Questions on Pseudoinstructions Question: How does MIPS assembler / SPIM 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

CS61C L17 MIPS Instruction Format III (22) Spring 2010 © 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 It’s OK for this exercise to make up MAL instructions

CS61C L17 MIPS Instruction Format III (23) Spring 2010 © UCB Rewrite TAL as MAL (Answer) TAL: or $v0,$0,$0 Loop:slt $t0,$0,$a1 beq $t0,$0,Exitadd $v0,$v0,$a0addi $a1,$a1,-1j Loop Exit: MAL: li$v0,0 Loop:ble$a1,$zero,Exit add$v0,$v0,$a0 sub$a1,$a1,1 jLoop Exit:

CS61C L17 MIPS Instruction Format III (24) Spring 2010 © UCB Peer Instruction Which of the instructions below are MAL and which are TAL? 1. addi $t0, $t1, beq $s0, 10, Exit 12 a) MM b) MT c) TM d) TT

CS61C L17 MIPS Instruction Format III (25) Spring 2010 © UCB 12 a) MM b) MT c) TM d) TT Peer Instruction Answer 40,000 > +32,767 => lui, ori Beq: both must be registers Exit: if > 2 15, then MAL Which of the instructions below are MAL and which are TAL? 1. addi $t0, $t1, beq $s0, 10, Exit

CS61C L17 MIPS Instruction Format III (26) Spring 2010 © 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