CS61C : Machine Structures

Similar documents
UCB CS61C : Machine Structures

Lecture 9: Disassembly

CS61C L12 MIPS Instruction Rep III, Running a Program I (6) Integer mult, div uses hi, lo regs mfhi and mflo copies out.

CS61C : Machine Structures

Review Reserve exponents, significands: Exponent Significand Object nonzero Denorm anything +/- fl. pt. # /- 255 nonzero NaN

Review of Last Lecture. CS 61C: Great Ideas in Computer Architecture. MIPS Instruction Representation II. Agenda. Dealing With Large Immediates

CS61CL : Machine Structures

Final 9am instead of 9:30! Your grade will be ed by autograder! Jeremy Huddleston sb $t1 0($s2)!

I-Format Instructions (3/4) Define fields of the following number of bits each: = 32 bits

CS 61C: Great Ideas in Computer Architecture. MIPS Instruc,on Representa,on II. Dan Garcia

CS 61C: Great Ideas in Computer Architecture. MIPS Instruction Formats

CS61C : Machine Structures

Review. Lecture 18 Running a Program I aka Compiling, Assembling, Linking, Loading

CS 61c: Great Ideas in Computer Architecture

CS61C - Machine Structures. Lecture 6 - Instruction Representation. September 15, 2000 David Patterson.

UC Berkeley CS61C : Machine Structures

CS61C : Machine Structures

Outline. Homework. Assembly Language. Instructions. Instruction Set Architectures. Csci 136 Computer Architecture II MIPS Instruction Set Architecture

Computer Science 61C Spring Friedland and Weaver. Instruction Encoding

UCB CS61C : Machine Structures

CS 61C: Great Ideas in Computer Architecture MIPS Instruction Formats

EEM 486: Computer Architecture. Lecture 2. MIPS Instruction Set Architecture

MIPS Assembly: More about Memory and Instructions CS 64: Computer Organization and Design Logic Lecture #7

EEM 486: Computer Architecture. Lecture 2. MIPS Instruction Set Architecture

CS61C L10 MIPS Instruction Representation II, Floating Point I (6)

Review. Disassembly is simple and starts by decoding opcode field. Lecture #13 Compiling, Assembly, Linking, Loader I

CS61C : Machine Structures

CS 61C: Great Ideas in Computer Architecture MIPS Instruction Formats

MIPS Coding Continued

UCB CS61C : Machine Structures

COMP MIPS instructions 2 Feb. 8, f = g + h i;

CS61C Machine Structures. Lecture 18 - Running a Program I. 3/1/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/

COMPSCI 313 S Computer Organization. 7 MIPS Instruction Set

Unsigned Binary Integers

Unsigned Binary Integers

Lecture 4: MIPS Instruction Set

Topic Notes: MIPS Instruction Set Architecture

MIPS Instruc,ons CS 64: Computer Organiza,on and Design Logic Lecture #8

Instructions: MIPS ISA. Chapter 2 Instructions: Language of the Computer 1

Review. Lecture #9 MIPS Logical & Shift Ops, and Instruction Representation I Logical Operators (1/3) Bitwise Operations

ECE232: Hardware Organization and Design. Computer Organization - Previously covered

Review 1/2 MIPS assembly language instructions mapped to numbers in 3 formats. CS61C Negative Numbers and Logical Operations R I J.

Computer Science and Engineering 331. Midterm Examination #1. Fall Name: Solutions S.S.#:

Administrivia. Midterm Exam - You get to bring. What you don t need to bring. Conflicts? DSP accomodations? Head TA

Lecture 5: Procedure Calls

Review (1/2) IEEE 754 Floating Point Standard: Kahan pack as much in as could get away with. CS61C - Machine Structures

Grading: 3 pts each part. If answer is correct but uses more instructions, 1 pt off. Wrong answer 3pts off.

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: MIPS Instruction Set Architecture

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA MIPS ISA. In a CPU. (vonneumann) Processor Organization

CS61C : Machine Structures

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

ECE 473 Computer Architecture and Organization Project: Design of a Five Stage Pipelined MIPS-like Processor Project Team TWO Objectives

CS61C : Machine Structures

CSSE232 Computer Architecture. Logic and Decision Opera:ons

CS61C : Machine Structures

The plot thickens. Some MIPS instructions you can write cannot be translated to a 32-bit number

CS61C : Machine Structures

ECE260: Fundamentals of Computer Engineering

CS 61C: Great Ideas in Computer Architecture MIPS Instruction Formats

Examples of branch instructions

ELEC / Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2)

ECE260: Fundamentals of Computer Engineering

CS 110 Computer Architecture MIPS Instruction Formats

CS 61c: Great Ideas in Computer Architecture

CS 61c: Great Ideas in Computer Architecture

UCB CS61C : Machine Structures

UC Berkeley CS61C : Machine Structures

Introduction to the MIPS. Lecture for CPSC 5155 Edward Bosworth, Ph.D. Computer Science Department Columbus State University

Telematics group University of Göttingen, Germany

Midterm. Sticker winners: if you got >= 50 / 67

CS61C : Machine Structures

The plot thickens. Some MIPS instructions you can write cannot be translated to a 32-bit number

CS2630: Computer Organization Project 1 MiniMa: (mini) assembler written in Java Due Jun 30, 2017, 11:59pm

Review. Lecture #7 MIPS Decisions So Far...

Instructors: Randy H. Katz David A. PaHerson hhp://inst.eecs.berkeley.edu/~cs61c/fa10. Fall Lecture #6. Agenda

Review C program: foo.c Compiler Assembly program: foo.s Assembler Object(mach lang module): foo.o

Flow of Control -- Conditional branch instructions

ECE 15B Computer Organization Spring 2011

Assembly Language Programming. CPSC 252 Computer Organization Ellen Walker, Hiram College

ECE232: Hardware Organization and Design

8*4 + 4 = 36 each int is 4 bytes

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: MIPS Instruction Set Architecture

ecture 12 From Code to Program: CALL (Compiling, Assembling, Linking, and Loading) Friedland and Weaver Computer Science 61C Spring 2017

EEC 581 Computer Architecture Lecture 1 Review MIPS

Chapter 2. Instructions: Language of the Computer. Adapted by Paulo Lopes

101 Assembly. ENGR 3410 Computer Architecture Mark L. Chang Fall 2009

Today s topics. MIPS operations and operands. MIPS arithmetic. CS/COE1541: Introduction to Computer Architecture. A Review of MIPS ISA.

CS3350B Computer Architecture MIPS Instruction Representation

MIPS Assembly: More about MIPS Instructions Using Functions in MIPS CS 64: Computer Organization and Design Logic Lecture #8

Midterm. CS64 Spring Midterm Exam

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

Chapter 2. Instruction Set Architecture (ISA)

Problem maximum score 1 35pts 2 22pts 3 23pts 4 15pts Total 95pts

CSE 378 Midterm 2/12/10 Sample Solution

Lecture 6 Decision + Shift + I/O

CS 110 Computer Architecture MIPS Instruction Formats

Chapter 2A Instructions: Language of the Computer

UCB CS61C : Machine Structures

Rui Wang, Assistant professor Dept. of Information and Communication Tongji University.

COMPUTER ORGANIZATION AND DESIGN

Transcription:

inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 17 Instruction Representation III 2010-03-01! Hello to Sherif Kandel listening from Egypt!!!Lecturer SOE Dan Garcia!!!www.cs.berkeley.edu/~ddgarcia 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 CS61C L17 MIPS Instruction Format III (1)!

Review! MIPS Machine Language Instruction: 32 bits representing a single instruction R" opcode" rs" rt" rd" shamt" funct" I! opcode" rs" rt" immediate" J! opcode! target address! Branches use PC-relative addressing, Jumps use absolute addressing.! CS61C L17 MIPS Instruction Format III (2)!

Outline! Disassembly! Pseudoinstructions! True Assembly Language (TAL) vs. MIPS Assembly Language (MAL)! CS61C L17 MIPS Instruction Format III (3)!

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 (4)!

Decoding Example (1/7)! Here are six machine language instructions in hexadecimal:! 00001025 hex 0005402A hex 11000003 hex 00441020 hex 20A5FFFF hex 08100001 hex Let the first instruction be at address 4,194,304 ten (0x00400000 hex ).! Next step: convert hex to binary! CS61C L17 MIPS Instruction Format III (5)!

Decoding Example (2/7)! R" The six machine language instructions in binary: 00000000000000000001000000100101 00000000000001010100000000101010 00010001000000000000000000000011 00000000010001000001000000100000 00100000101001011111111111111111 00001000000100000000000000000001! Next step: identify opcode and format 0" rs" rt" rd" shamt" funct" I! 1, 4-62" rs" rt" immediate" J! 2 or 3! target address! CS61C L17 MIPS Instruction Format III (6)!

Decoding Example (3/7)! Select the opcode (first 6 bits) Format:! R! R! I! R! I! J! to determine the format: 00000000000000000001000000100101 00000000000001010100000000101010 00010001000000000000000000000011 00000000010001000001000000100000 00100000101001011111111111111111 00001000000100000000000000000001 Look at opcode: 0 means R-Format, 2 or 3 mean J-Format, otherwise I-Format.! Next step: separation of fields! CS61C L17 MIPS Instruction Format III (7)!

Decoding Example (4/7)! Fields separated based on format/opcode:! Format:! R! R! I! R! I! J! 0" 0" 0" 2" 0" 37" 0" 0" 5" 8" 0" 42" 4" 8" 0" +3" 0" 2" 4" 2" 0" 32" 8" 5" 5" -1" 2" 1,048,577" Next step: translate ( disassemble ) to MIPS assembly instructions! CS61C L17 MIPS Instruction Format III (8)!

Decoding Example (5/7)! MIPS Assembly (Part 1):! Address: Assembly instructions:! 0x00400000 or $2,$0,$0 0x00400004 slt $8,$0,$5 0x00400008 beq $8,$0,3 0x0040000c add $2,$2,$4 0x00400010 addi $5,$5,-1 0x00400014 j 0x100001! Better solution: translate to more meaningful MIPS instructions (fix the branch/jump and add labels, registers)! CS61C L17 MIPS Instruction Format III (9)!

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 (10)!

Decoding Example (7/7)! Before Hex: 00001025 hex 0005402A hex 11000003 hex 00441020 hex 20A5FFFF hex 08100001 hex 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 (11)! After C code (Mapping below)!$v0: product!!!!$a0: multiplicand!!!$a1: multiplier! product = 0; while (multiplier > 0) { product += multiplicand; multiplier -= 1; } Demonstrated Big 61C Idea: Instructions are just numbers, code is treated like data!

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

Review from before: lui! So how does lui help us?! Example:!!!addi $t0,$t0, 0xABABCDCD becomes:! lui ori add $at, 0xABAB $at, $at, 0xCDCD $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 (13)!

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 (14)!

Example Pseudoinstructions! Register Move move reg2,reg1! Expands to:! add reg2,$zero,reg1 Load Immediate! li reg,value If value fits in 16 bits:! addi reg,$zero,value else:! lui reg,upper 16 bits of value ori reg,$zero,lower 16 bits! CS61C L17 MIPS Instruction Format III (15)!

Example Pseudoinstructions! Load Address: How do we get the address of an instruction or global variable into a register? la reg,label! Again if value fits in 16 bits:! addi reg,$zero,label_value else:! lui reg,upper 16 bits of value ori reg,$zero,lower 16 bits! CS61C L17 MIPS Instruction Format III (16)!

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 (17)!

Example Pseudoinstructions! Rotate Right Instruction ror reg, value! Expands to:! srl $at, reg, value sll reg, reg, 32-value or reg, reg, $at No OPeration instruction! nop Expands to instruction = 0 ten,! sll $0, $0, 0! 0! 0! CS61C L17 MIPS Instruction Format III (18)!

Example Pseudoinstructions! Wrong operation for operand addu reg,reg,value # should be addiu If value fits in 16 bits, addu is changed to:! addiu reg,reg,value else:! lui $at,upper 16 bits of value ori $at,$at,lower 16 bits addu reg,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 (19)!

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 (20)!

Questions on Pseudoinstructions! Question:! How does MIPS assembler / SPIM recognize pseudo-instructions?! Answer:! It looks for officially defined pseudoinstructions, 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 (21)!

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 (22)!

Rewrite TAL as MAL (Answer)! TAL:!!or $v0,$0,$0 MAL:! Loop: slt $t0,$0,$a1 beq $t0,$0,exit add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop Exit:!!!li $v0,0 Loop: ble $a1,$zero,exit add $v0,$v0,$a0 sub $a1,$a1,1 j Loop Exit:! CS61C L17 MIPS Instruction Format III (23)!

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

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

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