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

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

MIPS (SPIM) Assembler Syntax

ECE 15B COMPUTER ORGANIZATION

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

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

CS61C : Machine Structures

Assembler. #13 Running a Program II

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

Course Administration

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

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

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)

Lecture 10: Program Development versus Execution Environment

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

CS 61c: Great Ideas in Computer Architecture

5/17/2012. Recap from Last Time. CSE 2021: Computer Organization. The RISC Philosophy. Levels of Programming. Stored Program Computers

Recap from Last Time. CSE 2021: Computer Organization. Levels of Programming. The RISC Philosophy 5/19/2011

Instructions: MIPS arithmetic. MIPS arithmetic. Chapter 3 : MIPS Downloaded from:

Assembler. Lecture 8 CS301

Announcements HW1 is due on this Friday (Sept 12th) Appendix A is very helpful to HW1. Check out system calls

CS3350B Computer Architecture MIPS Introduction

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

Chapter 2: Instructions:

Reduced Instruction Set Computer (RISC)

Chapter 2. Instruction Set Architecture (ISA)

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

UCB CS61C : Machine Structures

Reduced Instruction Set Computer (RISC)

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

MIPS Processor Overview

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

Chapter 3. Instructions:

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

Chapter 2A Instructions: Language of the Computer

UCB CS61C : Machine Structures

CS3350B Computer Architecture

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

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

Levels of Programming. Registers

Lecture 2. Instructions: Language of the Computer (Chapter 2 of the textbook)

CS61C : Machine Structures

MIPS Assembly Language Programming

ECE 15B COMPUTER ORGANIZATION

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

MIPS Assembly Language. Today s Lecture

Today s Lecture. MIPS Assembly Language. Review: What Must be Specified? Review: A Program. Review: MIPS Instruction Formats

All instructions have 3 operands Operand order is fixed (destination first)

Computer Organization MIPS ISA

CS222: MIPS Instruction Set

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

COMPSCI 313 S Computer Organization. 7 MIPS Instruction Set

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

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei

CPSC 330 Computer Organization

Instructions: Language of the Computer

MIPS Assembly Language Programming

Computer Architecture. The Language of the Machine

Chapter 2. Instructions:

MIPS R-format Instructions. Representing Instructions. Hexadecimal. R-format Example. MIPS I-format Example. MIPS I-format Instructions

Stored Program Concept. Instructions: Characteristics of Instruction Set. Architecture Specification. Example of multiple operands

CENG3420 Lecture 03 Review

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

Computer Architecture. MIPS Instruction Set Architecture

Instructions: Language of the Computer

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

Mark Redekopp, All rights reserved. EE 357 Unit 11 MIPS ISA

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

Instruction Set Design and Architecture

CALL (Compiler/Assembler/Linker/ Loader)

Chapter 1. Computer Abstractions and Technology. Lesson 3: Understanding Performance

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

Lecture 4: MIPS Instruction Set

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

Math 230 Assembly Programming (AKA Computer Organization) Spring MIPS Intro

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

MIPS History. ISA MIPS Registers

UCB CS61C : Machine Structures

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

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

MIPS%Assembly% E155%

Computer Architecture

CS3350B Computer Architecture MIPS Instruction Representation

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

COMPUTER ORGANIZATION AND DESIGN

MIPS Reference Guide

ECE369. Chapter 2 ECE369

MIPS Assembly Programming

Computer Architecture Instruction Set Architecture part 2. Mehran Rezaei

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

MIPS ISA and MIPS Assembly. CS301 Prof. Szajda

MIPS ISA. 1. Data and Address Size 8-, 16-, 32-, 64-bit 2. Which instructions does the processor support

Memory Usage 0x7fffffff. stack. dynamic data. static data 0x Code Reserved 0x x A software convention

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

Course Administration

MIPS and QTSPIM Recap. MIPS Architecture. Cptr280. Dr Curtis Nelson. Cptr280, Autumn

MIPS Instruction Set

EEC 581 Computer Architecture Lecture 1 Review MIPS

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

CS/COE1541: Introduction to Computer Architecture

Transcription:

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

Topics: Assembly language, assemblers MIPS R2000 Assembly language Instruction set MIPS design goals Memory & registers Instruction formats Some MIPS instructions Advanced topics Macros Procedure calls I/O MIPSR200 Chip 2 2

Introduction Machine instructions: Language of the Machine Primitive (w.r.t. HLL) No sophisticated control flow (Loops, If-statements) Restrictive Arithmetic instructions operate on register operands only, two operands at a time (MIPS) Different m/c language dialects for different machines Once you learn one dialect, it s easy to learn the others 3 3

Introduction Instruction set: The complete vocabulary used by a machine Instruction Set Architecture (ISA): An abstract interface between the hardware and the lowest-level software of a machine Includes: Necessary information to write correct machinelanguage programs Specification of instructions, registers, memory size,...etc. We will concentrate on MIPS- ISA Used by NEC, Nintendo, Silicon Graphics, Sony 4 4

HLL Translation Compilers generate either machine language or assembly language object files HLL program Object code Program Compiler Assembler Linker CPU Assembly language program Executable code 5 5

Some Definitions Compiler Translates a high level language into object files or an assembly language files Assembler: Translates assembly language into machine language (object files) Linker: Combines object files into an executable file Resolves all external & forward references Executable file: Object files combined by the linker with library files 6 6

Some more definitions Program library: Pre-written routines Collection of subroutines and functions Stored in one or more files, usually in compiled form, One of the earliest forms of organized code reuse. Libraries are linked with the user's program to form a complete executable. The linking may be static linking or, in some systems, dynamic linking (DLL) 7 7

Definitions Global label Visible outside the file External reference Referencing a label in another file Forward reference Referencing a label that appears later in the same file 8 8

Definitions Macro: Extends assembly instructions through defining new (SW) instructions Properties A name (and possible arguments) Equated with some text that is expanded at compile time Information hiding device 9 9

Assembly Language Translation How are.exe files generated from Assembly source file? Source file Assembler Object file Source file Assembler Object file Linker Executable file Source file Assembler Object file Program library Executable machine language instructions Assembly language instructions Non-executable machine language instructions 10 10

Object File Format Program/procedure name Text Size Data size Object file header Binary data representation Contains unresolved references Associates labels with addresses Lists unresolved references Text segment Data segment Relocation information Symbol table Debugging information Machine language instructions code (non-executable) Identifies data & instructions that depend on absolute addresses References should change if stored in a different place in memory Correspondence of source program lines with instruction addresses Used by the debugger 11 11

Assembly Language A symbolic representation of the machine language of a specific processor. Advantages High execution speed Smaller code size Disadvantages: Machine specific Long programs Difficult to read, understand, & debug Lacks structure 12 12

But how do we use it in real life? Hybrid approach: Most of the program written in HLL Critical sections written in Assembly language Expansion factor: Ratio of length of assembly to HLL programs 13 13

What do assemblers do? Most assemby instructions map directly to machine instruction Translation from mnemonic to machine instruction Two phases: Get locations of labels (build symbol table) Translate statements into equivalent binary code Symbol Table Maintains a table of variable names and properties Used to help resolve forward & external referencing to create the object file 14 14

Translation Example: C-Program #include <stdio.h> int main (int argc, char *argv[]) { int i; int sum = 0; for (i=0; i<= 100; i=i+1) sum = sum +i*i; } printf( The sum from 0.. 100 is %d\n, sum); 15 15

Translation Example: Equivalent Assembly Program(No labels) addiu $29,$29, -32 #add immediate unsigned sw $31,20($29) # $29 = $sp stack pointer sw $4,32($29) # $31 = $ra return address sw $5,36($29) # sw $0,24($29) # Store relevant values sw $0,28($29) # onto stack lw $14,28($29) # lw $24,24($29) # multu $14,$14 # multiply unsigned addiu $8,$14,1 slti $1,$8,101 # set $1 if < immediate sw $8,28($29) mflo$15 # move from lo of register addu $25,$24,$15 bne $1,$0,-9 sw $25,24($29) lui $4,4096 # load upper immediate lw $5,24($29) jal 1048812 # jump & link addiu $4,$4,1072 lw $31,20($29) addiu $29,$29,32 jr $31 # jump register move $2, $0 16 16

Translation Example: Equivalent Assembly Program (Labeled).text.align 2.globl main main: subu $sp,$sp, 32 # incr stack by a stack frame sw $ra,20($sp) #Save return address sd $a0,32($sp) # pseudo-instr. save doubleword sw $0,24($sp) sw $0,28(sp) loop: lw $t6,28($sp) mul $t7,$t6,$t6 lw $t8,24($sp) addu $t9,$%8,$t7 sw $t9,24($sp) addu $t0,$t6,1 sw $t0,28($sp) ble $t0,100,loop la $a0,str # Pseudo-instr. Load address lw $a1,24($sp) jal printf # Jump & link move $v0,$0 lw $ra,20($sp) addu $sp,$sp,32 jr $ra.data.align0 # Turn off automatic alignment str:.asciiz The sum from 0..100 is %d\n 17 17

Pseudo-Instructions Instructions provided by an assembler, but not implemented in HW Make assembly programming easier without complicating HW Macros can replace pseudo-instructions 18 18

Assembly vs. Machine Language Assembly Language: Provides convenient symbolic representation Easier than writing down numbers Operands can be written in a different order that that in the instruction (e.g., destination first) Provide 'pseudo-instructions' Example: move $t0, $t1 exists only in Assembly would be implemented using add $t0,$t1,$zero Machine language: The underlying reality e.g., destination is no longer first When considering performance count real machine instructions, not pseudo-instructions 19 19

Linker Linker Combines object files from separate modules Resolves references among files Searches for library routines needed by the program Determines memory locations needed by each module Adjusts absolute references accordingly Often done both at compile time and load time 20 20

The Loader Loader Loads program into memory and provides actual memory references Usually an operating system component Object file Object file sub.. Executable file Instructions Relocation records main: jal???.. print. Linker main: jal print... print Loader CPU Print.. C - library 21 21

MIPS Memory Map Memory is typically in 3 parts Text segment: Holds program instructions Data segment Static data: Size is known to the compiler Lifetime = all program execution period Dynamic data (Heap) Size is known at runtime Allocated at runtime Stack segment Local variables allocated 0x7fff ffff 0x1001 0000 0x0040 0000 0x0000 0000 Dynamic data Static data Reserved Stack segment Data segment Text segment 22 22

MIPS Processors 3 processors: Main processor: For integer arithmetic Coprocessor 0: For exceptions, interrupts, & virtual memory system Coprocessor 1: For floating-point arithmetic 23 23

MIPS Processors Memory CPU Registers $0 Coprocessor1(FPU) Registers $0 Arithmetic Unit $31 Multiply Divide Lo Hi $31 Arithmetic Unit Coprocessor 0 (traps & memory) registers BadVAddr Status Cause EPC 24 24

MIPS Processors Addressing modes: Describe the manner in which addresses for memory accesses ae constructed MIPS is a Load-Store architecture Only load/store instructions access memory Data should be aligned (usually multiple of 4 bytes) More details: http://www.ece.gatech.edu/academic/courses/ ece2030/readings/instructions/spim.pdf 25 25

MIPS Addressing Terminology (register) Contents of register imm immediate imm (register) immediate + contents of register label address of label label ± imm address of label ± immediate label ± imm [register] address of label ±( immediate+contents of register) 26 26

Summary of Addressing Modes 1. Immediate addressing op rs rt Immediate 2. Register addressing op rs rt rd... funct 3. Base addressing op rs rt Address R e g i s t e r + Registers Register Memory Byte Halfword W ord 4. PC-Relative addressing op rs rt Address PC + 5. Pseudo addressing op Address Memory Word Memory PC W o r d 27 27

Memory Organization Essentially a large, singledimensional array Each cell has an address Address is supplied by instruction Memory address An index into the array, starting at 0 0 1 2 3 4 5 6 8 bits of data 8 bits of data 8 bits of data 8 bits of data 8 bits of data 8 bits of data 8 bits of data 28 28

Different ways to address memory Byte addressing: Index points to a byte of memory 2 32 bytes with byte addresses from 0 to 2 32-1 Words are aligned at word boundaries Most data items use "words" MIPS- Word is 32 bits (4 bytes) 2 30 words with byte addresses 0, 4, 8,... 2 30-4 0 4 8 12... Registers hold 32 bits of data 32 bits of data 32 bits of data 32 bits of data 32 bits of data 29 29

What about the instructions? When designing an ISA, need to consider Instruction length: Variable length instructions: Assembler needs to keep track of all instruction sizes to determine the position of the next instruction Fixed length instructions: Require less housekeeping Number of operands Depend on type of instruction 30 30

MIPS Instruction Formats Instructions are fixed length 32 bits long Example: add $t0, $s1, $s2 Registers have numbers, $t0=8, $s1=17, $s2=18 MIPS has 3 instruction formats R-type (Register) format J-type (Jump) format I-type (Immediate) format 31 31

MIPS Instruction Formats R-Format (Register): op: Operation code (6-bits) rs: 1 st source register (5-bits) rt: 2 nd source register (5-bits) rd: Destination register (5-bits) shamt: Shift amount (5-bits) funct: Function code (6-bits) The first (op) & last fields (funct), combined, indicate the type of instruction Second (rs) & third (rt) fields are the source operands Fourth field (rd) is the destination operand 0 17 18 8 0 32 000000 10001 10010 01000 00000 100000 op rs rt rd shamt funct 32 32

Registers Names & Numbers Name Register# Usage Preserved on call? $zero 0 the constant value 0 n.a. $v0-$v1 2-3 values for results & expr. evaluation no $a0-$a3 4-7 arguments yes $t0-$t7 8-15 temporaries no $s0-$s7 16-23 saved yes $t8-$t9 24-25 more temporaries no $gp 28 global pointer yes $sp 29 stack pointer yes $fp 30 frame pointer yes $ra 31 return address yes 33 33

SPIM Software simulator for running MIPS R- Series processors programs Why use a simulator? MIPS workstations Not always available Difficult to understand & program Simulator Better programming environment Provide more features Easily modified 34 34

Some Features of SPIM SPIM Simulator simulates most of the functions of three MIPS processors More about SPIM next week 35 35

MIPS Peek Assembly Syntax Comments Starts with the sharp sign # until end of line Identifiers Alphanumeric, _, and. Can t start with a digit Labels At beginning of line, followed by : 36 36

MIPS Assembly Language Numbers Decimal (default) Hexadecimal Strings Enclosed in double quotes Special characters \n new line \t tab \ quote 37 37

MIPS Assembler Directives Used to give information to the assembler Describe data or references.align n # Align data on 2 n byte boundary.ascii str # Store strings without null terminatiom.asciiz str # Store null-terminated string byte b1,..., bn # Store in successive bytes.data <addr> # Store in data segment.double dl1,,,,, dn # Store floating-pt.double-precision.extern sym size # External symbol with size bytes.float fl1,..., fn # Store floating-pt. single precision.globl sym # sym can be referenced from other files.half h1,..., hn # Half-words in successive memory.space n # Allocate n-bytes of space in data seg..text <addr> # Put text items in text segment.word w1,..., wn # Full word in successive memory 38 38

MIPS Assembler Directives Example:.asciiz Is equivalent to: The sum from 0..10 is %d\n.byte 84, 104, 101, 32, 115, 117, 109, 32.byte 102, 114, 111, 109, 32, 48, 32, 46.byte 46, 32, 49, 48, 32, 105, 115, 32.byte 37, 100, 10, 0 Note: 10 is ASCII code for line feed 0 is ASCII code for the NULL character For more Assembler directives see the course web page 39 39