CS61C : Machine Structures

Similar documents
ECE 15B COMPUTER ORGANIZATION

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

UC Berkeley CS61C : Machine Structures

ECE 15B COMPUTER ORGANIZATION

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

UCB CS61C : Machine Structures

Assembler. #13 Running a Program II

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

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

CS61C : Machine Structures

Lecture 10: Program Development versus Execution Environment

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

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

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

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

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

UCB CS61C : Machine Structures

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

UCB CS61C : Machine Structures

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

UCB CS61C : GREAT IDEAS IN COMPUTER ARCHITECTURE

CS 61c: Great Ideas in Computer Architecture

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

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

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

CS61C : Machine Structures

UCB CS61C : Machine Structures

From Code to Program: CALL Con'nued (Linking, and Loading)

CS 61C: Great Ideas in Computer Architecture CALL continued ( Linking and Loading)

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

Outline. Review: RISC-V Instruction Formats

CALL (Compiler/Assembler/Linker/ Loader)

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

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

Orange Coast College. Business Division. Computer Science Department CS 116- Computer Architecture. The Instructions

May Saeid Nooshabadi. Overview ELEC2041. Compiler Assembler Linker Loader Example. Microprocessors and Interfacing

September, Saeid Nooshabadi. Overview COMP Compiler Assembler Linker Loader Example

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

MIPS (SPIM) Assembler Syntax

Agenda. Review 2/10/11. CS 61C: Great Ideas in Computer Architecture (Machine Structures)

Lecture 9: Disassembly

Floats and Running a Program Instructor: Nick Riasanovsky

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

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

Architecture II. Computer Systems Laboratory Sungkyunkwan University

Assemblers and Linkers

CS61C : Machine Structures

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

CS61C : Machine Structures

Assemblers and Compilers

CS61C : Machine Structures

Course Administration

Machine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine

MIPS Instruction Set Architecture (2)

UCB CS61C : Machine Structures

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

CS 61C: Great Ideas in Computer Architecture More MIPS, MIPS Functions

CS 110 Computer Architecture Review for Midterm I

MIPS Assembly Language

ECE 2035 Programming HW/SW Systems Fall problems, 7 pages Exam Two 23 October 2013

MIPS Assembly Programming

Systems Architecture I

EE 361 University of Hawaii Fall

Examples of branch instructions

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

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

Computer Science 61C Spring Friedland and Weaver. Instruction Encoding

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

CS61C : Machine Structures

CSCI 2321 (Computer Design), Spring 2018 Homework 3

QtSPIM and MARS : MIPS Simulators

SPIM & MIPS Programming

CS 110 Computer Architecture Lecture 6: More MIPS, MIPS Functions

M2 Instruction Set Architecture

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

Review Session 1 Fri. Jan 19, 2:15 pm 3:05 pm Thornton 102

Assembler. Lecture 8 CS301

CS61C : Machine Structures

CSE 2021: Computer Organization

Kernel Registers 0 1. Global Data Pointer. Stack Pointer. Frame Pointer. Return Address.

CS 61c: Great Ideas in Computer Architecture

COMPUTER ORGANIZATION AND DESIGN

MIPS Reference Guide

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

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

ECE 2035 Programming HW/SW Systems Spring problems, 6 pages Exam Two 11 March Your Name (please print) total

CS 61c: Great Ideas in Computer Architecture

SPIM Instruction Set

Lecture 7: Examples, MARS, Arithmetic

We will study the MIPS assembly language as an exemplar of the concept.

Machine Instructions - II. Hwansoo Han

Chapter 2. Instruction Set Architecture (ISA)

Slide Set 4. for ENCM 369 Winter 2018 Section 01. Steve Norman, PhD, PEng

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

Review: Two#s Complement!!Change every 0 to 1 and 1 to 0 (invert or complement), then add 1 to the result!

Communicating with People (2.8)

ENCM 369 Winter 2013: Reference Material for Midterm #2 page 1 of 5

CS61C : Machine Structures

UCB CS61C : Machine Structures

Transcription:

inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 18 Running a Program I 2004-03-03 Wannabe Lecturer Alexandre Joly inst.eecs.berkeley.edu/~cs61c-te

Overview Interpretation vs Translation Translating C Programs Compiler Assembler Linker Loader An Example

Language Continuum Scheme Java bytecode Java C++ C Assembly machine language Easy to program Inefficient to interpret Efficient Difficult to program In general, we interpret a high level language if efficiency is not critical or translated to a lower level language to improve performance

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

Interpretation Scheme program: foo.scm Scheme Interpreter

Translation Scheme program: foo.scm Scheme Compiler Executable(mach lang pgm): a.out Hardware Scheme Compiler is a translator from Scheme to machine language.

Interpretation Any good reason to interpret machine language in software? SPIM useful for learning / debugging Apple Macintosh conversion Switched from Motorola 680x0 instruction architecture to PowerPC. Could require all programs to be retranslated from high level language Instead, let executables contain old and/or new machine code, interpret old code in software if necessary

Interpretation vs. Translation? Easier to write interpreter Interpreter closer to high-level, so gives better error messages (e.g., SPIM) Translator reaction: add extra information to help debugging (line numbers, names) Interpreter slower (10x?) but code is smaller (1.5X to 2X?) Interpreter provides instruction set independence: run on any machine Apple switched to PowerPC. Instead of retranslating all SW, let executables contain old and/or new machine code, interpret old code in software if necessary

Steps to Starting a Program C program: foo.c Compiler Assembly program: foo.s Assembler Object(mach lang module): foo.o Linker lib.o Executable(mach lang pgm): a.out Loader Memory

Compiler Input: High-Level Language Code (e.g., C, Java such as foo.c) Output: Assembly Language Code (e.g., foo.s for MIPS) Note: Output may contain pseudoinstructions Pseudoinstructions: instructions that assembler understands but not in machine (last lecture) For example: mov $s1, $s2 = or $s1, $s2, $zero

Where Are We Now? C program: foo.c Compiler Assembly program: foo.s Assembler Object(mach lang module): foo.o Linker lib.o Executable(mach lang pgm): a.out Loader Memory

Assembler Input: Assembly Language Code (e.g., foo.s for MIPS) Output: Object Code, information tables (e.g., foo.o for MIPS) Reads and Uses Directives Replace Pseudoinstructions Produce Machine Language Creates Object File

Assembler Directives (p. A-51 to A-53) Give directions to assembler, but do not produce machine instructions.text: Subsequent items put in user text segment.data: Subsequent items put in user data segment.globl sym: declares sym global and can be referenced from other files.asciiz str: Store the string str in memory and null-terminate it.word w1 wn: Store the n 32-bit quantities in successive memory words

Pseudoinstruction Replacement Asm. treats convenient variations of machine language instructions as if real instructions Pseudo: Real: subu $sp,$sp,32 sd $a0, 32($sp) mul $t7,$t6,$t5 addu $t0,$t6,1 ble $t0,100,loop la $a0, str addiu $sp,$sp,-32 sw $a0, 32($sp) sw $a1, 36($sp) mul $t6,$t5 mflo $t7 addiu $t0,$t6,1 slti $at,$t0,101 bne $at,$0,loop lui $at,left(str) ori $a0,$at,right(str)

Producing Machine Language (1/2) Simple Case Arithmetic, Logical, Shifts, and so on. All necessary info is within the instruction already. What about Branches? PC-Relative So once pseudoinstructions are replaced by real ones, we know by how many instructions to branch. So these can be handled easily.

Producing Machine Language (2/2) What about jumps (j and jal)? Jumps require absolute address. What about references to data? la gets broken up into lui and ori These will require the full 32-bit address of the data. These can t be determined yet, so we create two tables

Symbol Table List of items in this file that may be used by other files. What are they? Labels: function calling Data: anything in the.data section; variables which may be accessed across files First Pass: record label-address pairs Second Pass: produce machine code Result: can jump to a later label without first declaring it

Relocation Table List of items for which this file needs the address. What are they? Any label jumped to: j or jal - internal - external (including lib files) Any piece of data - such as the la instruction

Object File Format object file header: size and position of the other pieces of the object file text segment: the machine code data segment: binary representation of the data in the source file relocation information: identifies lines of code that need to be handled symbol table: list of this file s labels and data that can be referenced debugging information

Peer Instruction Which of the following instructions may need to be edited during link phase? Loop: lui $at, 0xABCD # a ori $a0,$at, 0xFEDC # b jal add_link # c bne $a0,$v0, Loop # d A. a. only B. b. only C. c. only D. d. only E. a., b., and c. F. All of the above

Buffer Slide

Peer Instruction Which of the following instructions may need to be edited during link phase? Loop: lui $at, 0xABCD # a ori $a0,$at, 0xFEDC # b jal add_link # c bne $a0,$v0, Loop # d A. a. only B. b. only C. c. only D. d. only E. a., b., and c. F. All of the above } data reference; relocate subroutine; relocate PC-relative branch; OK