UCB CS61C : Machine Structures

Similar documents
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

UCB CS61C : Machine Structures

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

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

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

UC Berkeley CS61C : Machine Structures

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

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

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

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 Running a Program - CALL (Compiling, Assembling, Linking, and Loading)

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

CS61C : Machine Structures

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

CS 61c: Great Ideas in Computer Architecture

CS61C : Machine Structures

Computer Science 61C Spring Friedland and Weaver. Instruction Encoding

CS61C : Machine Structures

UCB CS61C : Machine Structures

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

Lecture 4: MIPS Instruction Set

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

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

CS61C : Machine Structures

CS 110 Computer Architecture Running a Program - CALL (Compiling, Assembling, Linking, and Loading)

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

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

CS61CL : Machine Structures

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

ECE 15B COMPUTER ORGANIZATION

Topic Notes: MIPS Instruction Set Architecture

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

COMPSCI 313 S Computer Organization. 7 MIPS Instruction Set

CS 61C: Great Ideas in Computer Architecture Running a Program - CALL (Compiling, Assembling, Linking, and Loading)

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

CS61C : Machine Structures

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

CS61C : Machine Structures

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

Administrivia. Translation. Interpretation. Compiler. Steps to Starting a Program (translation)

UCB CS61C : Machine Structures

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

Unsigned Binary Integers

Unsigned Binary Integers

CS61C Machine Structures. Lecture 13 - MIPS Instruction Representation I. 9/26/2007 John Wawrzynek. www-inst.eecs.berkeley.

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

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

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

CS61C : Machine Structures

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

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

CS61C : Machine Structures

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

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

Assembler. #13 Running a Program II

CS 61c: Great Ideas in Computer Architecture

CS 110 Computer Architecture MIPS Instruction Formats

Chapter 2. Instruction Set Architecture (ISA)

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

MIPS Coding Continued

Lecture 5: Procedure Calls

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

CS61C : Machine Structures

CSE 141 Computer Architecture Spring Lecture 3 Instruction Set Architecute. Course Schedule. Announcements

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

Inequalities in MIPS (2/4) Inequalities in MIPS (1/4) Inequalities in MIPS (4/4) Inequalities in MIPS (3/4) UCB CS61C : Machine Structures

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

CS 61c: Great Ideas in Computer Architecture

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

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

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

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

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

Computer Architecture

CS 110 Computer Architecture MIPS Instruction Formats

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

EEC 581 Computer Architecture Lecture 1 Review MIPS

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

UCB CS61C : Machine Structures

Chapter 3 MIPS Assembly Language. Ó1998 Morgan Kaufmann Publishers 1

UCB CS61C : GREAT IDEAS IN COMPUTER ARCHITECTURE

Where Are We Now? Linker (1/3) Linker (2/3) Four Types of Addresses we ll discuss. Linker (3/3)

CS3350B Computer Architecture MIPS Instruction Representation

UCB CS61C : Machine Structures

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

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

CSSE232 Computer Architecture. Logic and Decision Opera:ons

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

ECE232: Hardware Organization and Design

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

UCB CS61C : Machine Structures

CS61C Machine Structures. Lecture 12 - MIPS Procedures II & Logical Ops. 2/13/2006 John Wawrzynek. www-inst.eecs.berkeley.

UC Berkeley CS61C : Machine Structures

MIPS Instruction Set Architecture (2)

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

Transcription:

inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Instructor Paul Pearce Lecture 12 Instruction Format III and Compilation 2010-07-12 This week UCB will begin mailing genetic testing kits to incoming students as part of an orientation program on the topic of personalized medicine. Privacy issues abound. http://tinyurl.com/2c3z8zv CS61C L12 Instruction Format III & Compilation (1)

In Review MIPS Machine Language Instruction: 32 bits representing a single instruction R I J opcode" rs" rt" rd" shamt" funct" opcode" rs" rt" immediate" opcode" target address" Branches use PC-relative addressing, Jumps use absolute addressing. Disassembly is simple and starts by decoding opcode field. (Right now!) CS61C L12 Instruction Format III & Compilation (2)

Outline Disassembly Pseudo-instructions True Assembly Language (TAL) vs. MIPS Assembly Language (MAL) Begin discussing Compilation CS61C L12 Instruction Format III & Compilation (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 L12 Instruction Format III & Compilation (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 L12 Instruction Format III & Compilation (5)

Decoding Example (2/7) The six machine language instructions in binary: 00000000000000000001000000100101 00000000000001010100000000101010 00010001000000000000000000000011 00000000010001000001000000100000 00100000101001011111111111111111 00001000000100000000000000000001 R" 0" rs" rt" rd" shamt" funct" I" 1, 4-62" rs" rt" immediate" J" 2 or 3" target address" CS61C L12 Instruction Format III & Compilation (6)

Decoding Example (3/7) Select the opcode (first 6 bits) to determine the format: Format:" R" R" I" R" I" J" 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 L12 Instruction Format III & Compilation (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 L12 Instruction Format III & Compilation (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 0x00400018 Better solution: translate to more meaningful MIPS instructions (fix the branch/jump and add labels, registers)" CS61C L12 Instruction Format III & Compilation (9)

Decoding Example (6/7) MIPS Assembly (Part 2): or $v0,$0,$0 Loop: slt $t0,$0,$a1 #t0 = 1 if $0 < $a0 Exit: beq #t0 = 0 if $0>= $a0 $t0,$0,exit # goto exit add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop Next step: translate to C code (must be creative!)" # if $a0 <= 0 CS61C L12 Instruction Format III & Compilation (10)

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

Review from before: lui So how does lui help us? Example: becomes: addi lui ori add CS61C L12 Instruction Format III & Compilation (12) $t0,$t0, 0xABABCDCD $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

Administrivia Midterm is Friday! 9:30am-12:30 in 100 Lewis! Midterm covers material up to and including Tuesday July 13 th. Old midterms online (link at top of page) Lectures and reading materials fair game Bring 1 sheet of notes (front and back) and a pencil. We ll provide the green sheet. Review session tonight, 6:30pm in 306 Soda There are CS Illustrated posters on floating point at the end of today s handout. Be sure to check them out! CS61C L12 Instruction Format III & Compilation (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 1 or more real MIPS instructions. Some examples follow CS61C L12 Instruction Format III & Compilation (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 L12 Instruction Format III & Compilation (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 L12 Instruction Format III & Compilation (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 L12 Instruction Format III & Compilation (17)

Example Pseudoinstructions Rotate Right Instruction ror reg, value Expands to: srl $at, reg, value sll or reg, reg, 32-value reg, reg, $at 0" 0" No OPeration instruction" nop Expands to instruction = 0 ten," sll $0, $0, 0 " CS61C L12 Instruction Format III & Compilation (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 L12 Instruction Format III & Compilation (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 (which exist in the MIPS ISA) that can actually get directly translated into a single machine language instruction (32-bit binary string). Green sheet is TAL! A program must be converted from MAL into TAL before translation into 1s & 0s. CS61C L12 Instruction Format III & Compilation (20)

Questions on Pseudoinstructions Question: How does MIPS assembler / Mars 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 L12 Instruction Format III & Compilation (21)

Rewrite TAL as MAL TAL: or $v0,$0,$0 Loop: slt $t0,$0,$a1 beq $t0,$0,exit # goto exit Exit: add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop This time convert to MAL " Itʼs OK for this exercise to make up MAL instructions" # if $a0 <= 0 CS61C L12 Instruction Format III & Compilation (22)

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: ble $a1,$zero,exit add sub $v0,$v0,$a0 $a1,$a1,1 Exit:" j Loop CS61C L12 Instruction Format III & Compilation (23)

Review 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 L12 Instruction Format III & Compilation (24)

Overview Interpretation vs Translation Translating C Programs Compiler (next time) Assembler (next time) Linker (next time) Loader (next time) An Example (next time) CS61C L12 Instruction Format III & Compilation (25)

Language Execution Continuum An Interpreter is a program that executes other programs. Java bytecode Scheme Java C++ C Assembly machine language Easy to program Inefficient to interpret Difficult to program Efficient to interpret Language translation gives us another option. In general, we interpret a high level language when efficiency is not critical and translate to a lower level language to up performance CS61C L12 Instruction Format III & Compilation (26)

Interpretation vs Translation How do we run a program written in a source language? Interpreter: Directly executes a program in the source language Translator: Converts a program from the source language to an equivalent program in another language For example, consider a Scheme program foo.scm CS61C L12 Instruction Format III & Compilation (27)

Interpretation Scheme Interpreter is just a program that reads a scheme program and performs the functions of that scheme program. CS61C L12 Instruction Format III & Compilation (28)

Translation Scheme Compiler is a translator from Scheme to machine language. The processor is a hardware interpeter of machine language. CS61C L12 Instruction Format III & Compilation (29)

Interpretation Any good reason to interpret machine language in software? MARS useful for learning / debugging Apple Macintosh conversion Switched from Motorola 680x0 instruction architecture to PowerPC. Similar issue with switch to x86. Could require all programs to be re-translated from high level language Instead, let executables contain old and/or new machine code, interpret old code in software if necessary (emulation) CS61C L12 Instruction Format III & Compilation (30)

Interpretation vs. Translation? (1/2) Generally easier to write interpreter Interpreter closer to high-level, so can give better error messages (e.g., MARS, stk) Translator reaction: add extra information to help debugging (line numbers, names) Interpreter slower (10x?), code smaller (2x?) Interpreter provides instruction set independence: run on any machine CS61C L12 Instruction Format III & Compilation (31)

Interpretation vs. Translation? (2/2) Translated/compiled code almost always more efficient and therefore higher performance: Important for many applications, particularly operating systems. Translation/compilation helps hide the program source from the users: One model for creating value in the marketplace (eg. Microsoft keeps all their source code secret) Alternative model, open source, creates value by publishing the source code and fostering a community of developers. CS61C L12 Instruction Format III & Compilation (32)

Steps to Starting a Program (translation) CS61C L12 Instruction Format III & Compilation (33)

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 L12 Instruction Format III & Compilation (34)

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 Interpretation vs translation CS61C L12 Instruction Format III & Compilation (36)

Bonus slides These are extra slides that used to be included in lecture notes, but have been moved to this, the bonus area to serve as a supplement. The slides will appear in the order they would have in the normal presentation CS61C L12 Instruction Format III & Compilation (37)

jump example (1/5) address (shown in hex) PC" 2345ABC4 addi $s3,$zero,1016 2345ABC8 j LABEL 2345ABCC add $t0, $t0, $t0 2ABCDE10 LABEL: add $s0,$s0,$s1 j J-Format: opcode = 2 (look up in table) target address =??? CS61C L12 Instruction Format III & Compilation (38)

jump example (2/5) PC" address (shown in hex) 2345ABC4 addi $s3,$zero,1016 2345ABC8 j LABEL 2345ABCC add $t0, $t0, $t0 2ABCDE10 LABEL: add $s0,$s0,$s1 j J-Format: We want to jump to 0x2ABCDE10. As binary: Target address " 31" 0" 00101010101111001101111000010000 Note: The first 4 bits of PC+4 and the target are the same! Thatʼs why we can do this!" CS61C L12 Instruction Format III & Compilation (39)

jump example (3/5) address (shown in hex) PC" 2345ABC4 addi $s3,$zero,1016 2345ABC8 j LABEL 2345ABCC add $t0, $t0, $t0 2ABCDE10 LABEL: add $s0,$s0,$s1 j J-Format: binary representation: 000010" 10101011110011011110000100" hexadecimal representation: 0AAF 3784 hex CS61C L12 Instruction Format III & Compilation (40)

jump example (4/5) J How do we reconstruct the PC?: address (shown in hex) PC" 2345ABC4 22D5 FFCE hex # addi 2345ABC8 0AAF 3784 hex # jump 2345ABCC 012A 4020 hex # add Machine level Instruction (binary representation): 000010" 10101011110011011110000100" Jump" Target address " CS61C L12 Instruction Format III & Compilation (41)

jump example (5/5) J How do we reconstruct the PC?: address (shown in hex) PC" 2345ABC4 22D5 FFCE hex # addi 2345ABC8 0AAF 3784 hex # jump 2345ABCC 012A 4020 hex # add New PC = { (PC+4)[31..28], target address, } Target address " 0010" 1010101111001101111000010000" 31" 0" CS61C L12 Instruction Format III & Compilation (42)