Incremental Machine Descriptions for GCC

Size: px
Start display at page:

Download "Incremental Machine Descriptions for GCC"

Transcription

1 Incremental Machine Descriptions for GCC Sameera Deshpande Uday Khedker. ( {sameera,uday}) Department of Computer Science and Engineering, Indian Institute of Technology, Bombay September 16, 2007

2 Part 1 Incremental Machine Descriptions

3 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 1/29 Modularity in Compilation Source Features Target Features Phases of Compilation

4 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 1/29 Modularity in Compilation Source Features Target Features Phase 1 Phases of Compilation Phase n

5 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 2/29 Modularity in Compilation Source Features Target Features Phase 1 Phases of Compilation Feature n Phase n Feature 1

6 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 3/29 Modularity in Compilation Feature n Source Features Target Features Feature 1 Phase 1 Phases of Compilation Feature n Phase n Feature 1

7 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 4/29 Modularity in Compilation Is it possible to achieve such a clean division? Compilation phases may be independent in principle but in practice, the interfaces carry a lot of information making the intermdediate representations quite complex. Translation of many source features depend on translation of other source features. Many target features are are dependent on each other. How does one understand the abstractions which GCC machine descriptions capture? How does one partition machine descriptions?

8 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 5/29 Appropriate Modularity for Machine Descriptions? Level n Source Features (Cumulative) Level 1 Minimal Target Features (Cumulative) Phases of Compilation

9 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 6/29 Systematic Development of Machine Descriptions Other data types Conditional control transfers Function Calls Arithmetic Expressions Sequence of Simple Assignments involving integers MD Level 1 MD Level 2 MD Level 3 MD Level 4 MD Level 5

10 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 7/29 Systematic Development of Machine Descriptions Define different levels of source language Identify the minimal information required in the machine description to support each level Successful compilation of any program, and correct execution of the generated assembly program. Interesting observations It is the increment in the source language which results in understandable increments in machine descriptions rather than the increment in the target architecture. If the levels are identified properly, the increments in machine descriptions are monotonic.

11 Part 2 Level 0 of Spim Machine Descriptions

12 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 9/29 Sub-levels of Level 0 Three sub-levels Level 0.0: Merely build GCC for spim simulator Does not compile any program (i.e. compilation aborts) Level 0.1: Compiles empty parameterless void function void fun() { } void fun() { L: goto L; } Level 0.2: Incorporates complete activation record structure Required for Level 1

13 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 10/29 Category of Macros in Level 0 Category Level 0.0 Level 0.1 Level 0.2 Memory Layout complete complete complete Registers partial partial complete Addressing Modes none partial partial Activation Record Conventions dummy dummy complete Calling Conventions dummy dummy partial Assembly Output Format dummy partial partial Complete specification of activation record in level 0.2 is not necessary but is provided to facilitate local variables in level 1. Complete specification of registers in level 0.2 follows the complete specification of activation record.

14 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 12/29 Operations in Level 0.0 In principle spim0.0.md can be empty.

15 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 12/29 Operations in Level 0.0 In principle spim0.0.md can be empty. However, this results in empty data structures in the C source. Empty arrays in declarations are not acceptable in ANSI C.

16 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 12/29 Operations in Level 0.0 In principle spim0.0.md can be empty. However, this results in empty data structures in the C source. Empty arrays in declarations are not acceptable in ANSI C. If we remove -pedantic option while building gcc, the compiler gets built.

17 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 12/29 Operations in Level 0.0 In principle spim0.0.md can be empty. However, this results in empty data structures in the C source. Empty arrays in declarations are not acceptable in ANSI C. If we remove -pedantic option while building gcc, the compiler gets built. If we do not want to change the configuration system, spim0.0.md can be defined to contain (define_insn "dummy_pattern" [(reg:si 0)] "1" "This stmnt should not be emitted!" )

18 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 14/29 Operations in Level 0 Operations Level 0.0 Level 0.1 Level 0.2 JUMP direct dummy actual actual JUMP indirect dummy dummy dummy RETURN not required required required

19 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 14/29 Operations in Level 0 Operations Level 0.0 Level 0.1 Level 0.2 JUMP direct dummy actual actual JUMP indirect dummy dummy dummy RETURN not required partial partial spim0.2.md (define insn "jump" [(set (pc) (label ref (match operand 0 "" "")) )] "" "ja %l0" )

20 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 14/29 Operations in Level 0 Operations Level 0.0 Level 0.1 Level 0.2 JUMP direct dummy actual actual JUMP indirect dummy dummy dummy RETURN not required partial partial spim0.0.c rtx gen jump (...) { return 0; } rtx gen indirect jump (...) { return 0; } spim0.0.h #define CODE FOR indirect jump 8 spim0.2.md (define insn "jump" [(set (pc) (label ref (match operand 0 "" "")) )] "" "j %l0" )

21 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 14/29 Operations in Level 0 Operations Level 0.0 Level 0.1 Level 0.2 JUMP direct dummy actual actual JUMP indirect dummy dummy dummy RETURN not required partial partial (define expand "epilogue" [(clobber (const int 0))] "" { spim epilogue(); DONE; } ) (define insn "IITB return" [(return)] "" "jr \\$ra" ) spim0.2.md spim0.2.c void spim epilogue() { emit insn(gen IITB return()); }

22 Part 3 Level 1 of Spim Machine Descriptions

23 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 15/29 Increments for Level 1 Addition to the source language Assignment statements involving integer constant, integer local or global variables. Returning values. (No calls, though!) Changes in machine descriptions Minor changes in macros required for level 0 $zero now belongs to new class Assembly output needs to change Some function bodies expanded New operations included in the.md file diff -w shows the changes!

24 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 16/29 Operations Required in Level 1 Operation Primitive Implementation Variants Dest Src R i R j move rj, ri R M global lw r, m R M local lw r, c($fp) R C li r, c M R sw r, m RETURN Src RETURN Src $v0 Src j $ra Dest Src 1 + Src 2 R i R j + R k add ri, rj, rk R i R j + C addi ri, rj, c

25 Part 4 Level 2 of Spim Machine Descriptions

26 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 17/29 Increments for Level 2 Addition to the source language : Arithmetic Operations. Bitwise Operations. Sub-levels of Level 2 Level 2.0: Compound instructions handled at assembly emission time. Level 2.1: Compound instructions emitted seperately at RTL code generation time. Level 2.2: Compound instructions are emitted atomically, but splitted in later phases.

27 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 19/29 Arithmetic Operations Required in Level 2 Operation Primitive Implementation Variants Dest Src 1 Src 2 R i R j R k sub ri, rj, rk Dest Src R i R j neg ri, rj Dest Src 1 /Src 2 R i R j /R k div rj, rk mflo ri Dest Src 1 %Src 2 R i R j %R k rem ri, rj, rk Dest Src 1 Src 2 R i R j R k mul ri, rj, rk

28 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 20/29 Bitwise Operations Required in Level 2 Operation Primitive Implementation Variants Dest Src 1 Src 2 R i R j R k sllv ri, rj, rk R i R j C 5 sll ri, rj, c Dest Src 1 Src 2 R i R j R k srav ri, rj, rk R i R j C 5 sra ri, rj, c Dest Src 1 &Src 2 R i R j &R k and ri, rj, rk R i R j &C andi ri, rj, c Dest Src 1 Src 2 R i R j R k or ri, rj, rk R i R j C ori ri, rj, c Dest Src 1 ˆ Src 2 R i R j ˆ R k xor ri, rj, rk R i R j ˆ C xori ri, rj, c Dest Src R i R j not ri, rj

29 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 21/29 Changes in machine descriptions MD Level 2.0 Level 2.1 Level 2.2 Macros Level 1 Changed Level 2.1 Function definitions Level 1 Added Level 2.1 md instructions Added SPNs SPNs + Support SPNs + Support

30 Part 5 Level 3 of Spim Machine Descriptions

31 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 22/29 Operations Required in Level 3 Operation Primitive Implementation Remark Variants Dest fun(p 1,...,P n ) fun(p 1,P 2,...,P n ) call L fun,n call L fun,n lw r i, [SP] sw r i, [SP] : Level 1 lw r i, [SP-n*4] sw r i, [SP-n*4] jal L New Dest $v0 level 1 lw r i, [SP] sw r i, [SP] : Level 1 lw r i, [SP-n*4] sw r i, [SP-n*4] jal L New

32 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 24/29 a = fun(b + c, b, c) addi $sp, $sp, 16 move $a0, $sp sw $v 0, 0($a0) lw $v 0, 20($fp) sw $v 0, 4($a0) lw $v 0, 16($fp) sw $v 0, 8($a0) jal fun addi $sp, $sp, 16 sw $v 0, 24($fp)

33 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 25/29 Activation Record Generation during Call Caller s Activation Record Parameter n Parameter n 1... Parameter 1 Return Address Caller s FPR (Control Link) Caller s SPR Callee Saved Registers Local Variable 1 Local Variable 2... Local Variable n

34 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 25/29 Activation Record Generation during Call Operations performed by caller Push parameters on stack. Load return address in return address register. Transfer control to Callee. Caller s Activation Record Parameter n Parameter n 1... Parameter 1 Return Address Caller s FPR (Control Link) Caller s SPR Callee Saved Registers Local Variable 1 Local Variable 2... Local Variable n

35 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 25/29 Activation Record Generation during Call Operations performed by caller Push parameters on stack. Load return address in return address register. Transfer control to Callee. Operations performed by callee Push Return address stored by caller on stack. Push caller s Frame Pointer Register. Push caller s Stack Pointer. Save callee saved registers, if used by callee. Create local variables frame. Start callee body execution. Caller s Activation Record Parameter n Parameter n 1... Parameter 1 Return Address Caller s FPR (Control Link) Caller s SPR Callee Saved Registers Local Variable 1 Local Variable 2... Local Variable n

36 Part 6 Level 4 of Spim Machine Descriptions

37 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 26/29 Operations Required in Level 4 Operation Primitive Implementation Variants Src 1 < Src 2? goto L : PC Src 1 > Src 2? goto L : PC Src 1 Src 2? goto L : PC Src 1 Src 2? goto L : PC CC R i < R j CC < 0? goto L : PC blt r i,r j,l CC R i > R j CC > 0? goto L : PC bgt r i,r j,l CC R i R j CC 0? goto L : PC ble r i,r j,l CC R i R j CC 0? goto L : PC bge r i,r j,l

38 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 27/29 Operations Required in Level 4 Operation Primitive Implementation Variants Src 1 == Src 2? goto L : PC Src 1 Src 2? goto L : PC CC R i == R j CC == 0? goto L : PC beq r i,r j,l CC R i R j CC 0? goto L : PC bne r i,r j,l

39 Part 7 Summary

40 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 29/29 Summary of Incremental Construction of MD What is a minimal machine description?

41 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 29/29 Summary of Incremental Construction of MD What is a minimal machine description? We compared ALL machine descriptions available in the distribution Number of macros common to these descriptions: 63

42 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 29/29 Summary of Incremental Construction of MD What is a minimal machine description? We compared ALL machine descriptions available in the distribution Number of macros common to these descriptions: 63 Number of distinct macros in all these descriptions: 732!

43 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 29/29 Summary of Incremental Construction of MD What is a minimal machine description? We compared ALL machine descriptions available in the distribution Number of macros common to these descriptions: 63 Number of distinct macros in all these descriptions: 732! Number of macros in spim0.0 : 92

44 September 16, 2007 PACT2007 GREPS: Incremental Machine Descriptions for GCC 29/29 Summary of Incremental Construction of MD What is a minimal machine description? We compared ALL machine descriptions available in the distribution Number of macros common to these descriptions: 63 Number of distinct macros in all these descriptions: 732! Number of macros in spim0.0 : 92 Incremental construction of MD governed by increments in source language features is a powerful methodology of learning the abstractions implicitly embodied by the machine descriptions!

45 Part 8 Thank You!

Retargeting GCC to Spim: A Recap

Retargeting GCC to Spim: A Recap Workshop on Essential Abstractions in GCC July 09 Spim MD Levels 0 & 1: Outline 1/32 Outline Incremental Machine Descriptions for Spim: Levels 0 and 1 GCC Resource Center (www.cse.iitb.ac.in/grc Department

More information

SPIM Instruction Set

SPIM Instruction Set SPIM Instruction Set This document gives an overview of the more common instructions used in the SPIM simulator. Overview The SPIM simulator implements the full MIPS instruction set, as well as a large

More information

MIPS%Assembly% E155%

MIPS%Assembly% E155% MIPS%Assembly% E155% Outline MIPS Architecture ISA Instruction types Machine codes Procedure call Stack 2 The MIPS Register Set Name Register Number Usage $0 0 the constant value 0 $at 1 assembler temporary

More information

CS 61c: Great Ideas in Computer Architecture

CS 61c: Great Ideas in Computer Architecture MIPS Functions July 1, 2014 Review I RISC Design Principles Smaller is faster: 32 registers, fewer instructions Keep it simple: rigid syntax, fixed instruction length MIPS Registers: $s0-$s7,$t0-$t9, $0

More information

Computer Architecture. The Language of the Machine

Computer Architecture. The Language of the Machine Computer Architecture The Language of the Machine Instruction Sets Basic ISA Classes, Addressing, Format Administrative Matters Operations, Branching, Calling conventions Break Organization All computers

More information

Chapter 2. Computer Abstractions and Technology. Lesson 4: MIPS (cont )

Chapter 2. Computer Abstractions and Technology. Lesson 4: MIPS (cont ) Chapter 2 Computer Abstractions and Technology Lesson 4: MIPS (cont ) Logical Operations Instructions for bitwise manipulation Operation C Java MIPS Shift left >>> srl Bitwise

More information

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

ECE 2035 Programming HW/SW Systems Fall problems, 7 pages Exam Two 23 October 2013 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

CSc 256 Midterm (green) Fall 2018

CSc 256 Midterm (green) Fall 2018 CSc 256 Midterm (green) Fall 2018 NAME: Problem 1 (5 points): Suppose we are tracing a C/C++ program using a debugger such as gdb. The code showing all function calls looks like this: main() { bat(5);

More information

Overview. Introduction to the MIPS ISA. MIPS ISA Overview. Overview (2)

Overview. Introduction to the MIPS ISA. MIPS ISA Overview. Overview (2) Introduction to the MIPS ISA Overview Remember that the machine only understands very basic instructions (machine instructions) It is the compiler s job to translate your high-level (e.g. C program) into

More information

Branch Addressing. Jump Addressing. Target Addressing Example. The University of Adelaide, School of Computer Science 28 September 2015

Branch Addressing. Jump Addressing. Target Addressing Example. The University of Adelaide, School of Computer Science 28 September 2015 Branch Addressing Branch instructions specify Opcode, two registers, target address Most branch targets are near branch Forward or backward op rs rt constant or address 6 bits 5 bits 5 bits 16 bits PC-relative

More information

CSc 256 Midterm 1 Fall 2011

CSc 256 Midterm 1 Fall 2011 CSc 256 Midterm 1 Fall 2011 NAME: Problem 1a: Given the C++ function prototype and variable declarations: int func(int arg0, int *arg1, int *arg2); int *ptr, n, arr[10]; which of the following statements

More information

TSK3000A - Generic Instructions

TSK3000A - Generic Instructions TSK3000A - Generic Instructions Frozen Content Modified by Admin on Sep 13, 2017 Using the core set of assembly language instructions for the TSK3000A as building blocks, a number of generic instructions

More information

Chapter 2. Instructions:

Chapter 2. Instructions: Chapter 2 1 Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow Very restrictive e.g., MIPS Arithmetic Instructions We ll be working with

More information

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

Mark Redekopp, All rights reserved. EE 357 Unit 11 MIPS ISA EE 357 Unit 11 MIPS ISA Components of an ISA 1. Data and Address Size 8-, 16-, 32-, 64-bit 2. Which instructions does the processor support SUBtract instruc. vs. NEGate + ADD instrucs. 3. Registers accessible

More information

Control Instructions

Control Instructions Control Instructions Tuesday 22 September 15 Many slides adapted from: and Design, Patterson & Hennessy 5th Edition, 2014, MK and from Prof. Mary Jane Irwin, PSU Summary Previous Class Instruction Set

More information

Control Instructions. Computer Organization Architectures for Embedded Computing. Thursday, 26 September Summary

Control Instructions. Computer Organization Architectures for Embedded Computing. Thursday, 26 September Summary Control Instructions Computer Organization Architectures for Embedded Computing Thursday, 26 September 2013 Many slides adapted from: Computer Organization and Design, Patterson & Hennessy 4th Edition,

More information

Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring Topic Notes: MIPS Programming

Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring Topic Notes: MIPS Programming Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring 2009 Topic Notes: MIPS Programming We spent some time looking at the MIPS Instruction Set Architecture. We will now consider

More information

COMP 303 Computer Architecture Lecture 3. Comp 303 Computer Architecture

COMP 303 Computer Architecture Lecture 3. Comp 303 Computer Architecture COMP 303 Computer Architecture Lecture 3 Comp 303 Computer Architecture 1 Supporting procedures in computer hardware The execution of a procedure Place parameters in a place where the procedure can access

More information

Lecture 6 Decision + Shift + I/O

Lecture 6 Decision + Shift + I/O Lecture 6 Decision + Shift + I/O Instructions so far MIPS C Program add, sub, addi, multi, div lw $t0,12($s0) sw $t0, 12($s0) beq $s0, $s1, L1 bne $s0, $s1, L1 j L1 (unconditional branch) slt reg1,reg2,reg3

More information

MIPS Assembly Language

MIPS Assembly Language MIPS Assembly Language Chapter 15 S. Dandamudi Outline MIPS architecture Registers Addressing modes MIPS instruction set Instruction format Data transfer instructions Arithmetic instructions Logical/shift/rotate/compare

More information

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

101 Assembly. ENGR 3410 Computer Architecture Mark L. Chang Fall 2009 101 Assembly ENGR 3410 Computer Architecture Mark L. Chang Fall 2009 What is assembly? 79 Why are we learning assembly now? 80 Assembly Language Readings: Chapter 2 (2.1-2.6, 2.8, 2.9, 2.13, 2.15), Appendix

More information

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam One 19 September 2012

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam One 19 September 2012 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

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

ECE232: Hardware Organization and Design. Computer Organization - Previously covered ECE232: Hardware Organization and Design Part 6: MIPS Instructions II http://www.ecs.umass.edu/ece/ece232/ Adapted from Computer Organization and Design, Patterson & Hennessy, UCB Computer Organization

More information

ECE 15B Computer Organization Spring 2010

ECE 15B Computer Organization Spring 2010 ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 7: Procedures I Partially adapted from Computer Organization and Design, 4 th edition, Patterson and Hennessy, and classes taught by and

More information

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

MIPS ISA. 1. Data and Address Size 8-, 16-, 32-, 64-bit 2. Which instructions does the processor support Components of an ISA EE 357 Unit 11 MIPS ISA 1. Data and Address Size 8-, 16-, 32-, 64-bit 2. Which instructions does the processor support SUBtract instruc. vs. NEGate + ADD instrucs. 3. Registers accessible

More information

Introduction to MIPS Processor

Introduction to MIPS Processor Introduction to MIPS Processor The processor we will be considering in this tutorial is the MIPS processor. The MIPS processor, designed in 1984 by researchers at Stanford University, is a RISC (Reduced

More information

Chapter 2A Instructions: Language of the Computer

Chapter 2A Instructions: Language of the Computer Chapter 2A Instructions: Language of the Computer Copyright 2009 Elsevier, Inc. All rights reserved. Instruction Set The repertoire of instructions of a computer Different computers have different instruction

More information

MIPS Assembly Language Guide

MIPS Assembly Language Guide MIPS Assembly Language Guide MIPS is an example of a Reduced Instruction Set Computer (RISC) which was designed for easy instruction pipelining. MIPS has a Load/Store architecture since all instructions

More information

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

We will study the MIPS assembly language as an exemplar of the concept. MIPS Assembly Language 1 We will study the MIPS assembly language as an exemplar of the concept. MIPS assembly instructions each consist of a single token specifying the command to be carried out, and

More information

Chapter 3. Instructions:

Chapter 3. Instructions: Chapter 3 1 Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow Very restrictive e.g., MIPS Arithmetic Instructions We ll be working with

More information

comp 180 Lecture 10 Outline of Lecture Procedure calls Saving and restoring registers Summary of MIPS instructions

comp 180 Lecture 10 Outline of Lecture Procedure calls Saving and restoring registers Summary of MIPS instructions Outline of Lecture Procedure calls Saving and restoring registers Summary of MIPS instructions Procedure Calls A procedure of a subroutine is like an agent which needs certain information to perform a

More information

Lecture 5: Procedure Calls

Lecture 5: Procedure Calls Lecture 5: Procedure Calls Today s topics: Procedure calls and register saving conventions 1 Example Convert to assembly: while (save[i] == k) i += 1; i and k are in $s3 and $s5 and base of array save[]

More information

Lecture 5: Procedure Calls

Lecture 5: Procedure Calls Lecture 5: Procedure Calls Today s topics: Memory layout, numbers, control instructions Procedure calls 1 Memory Organization The space allocated on stack by a procedure is termed the activation record

More information

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei Instruction Set Architecture part 1 (Introduction) Mehran Rezaei Overview Last Lecture s Review Execution Cycle Levels of Computer Languages Stored Program Computer/Instruction Execution Cycle SPIM, a

More information

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

ECE 2035 Programming HW/SW Systems Spring problems, 6 pages Exam Two 11 March Your Name (please print) total Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

CSc 256 Final Fall 2016

CSc 256 Final Fall 2016 CSc 256 Final Fall 2016 NAME: Problem 1 (25 points) Translate the C/C++ function func() into MIPS assembly language. The prototype is: void func(int arg0, int *arg1); arg0-arg1 are in $a0- $a1 respectively.

More information

Thomas Polzer Institut für Technische Informatik

Thomas Polzer Institut für Technische Informatik Thomas Polzer tpolzer@ecs.tuwien.ac.at Institut für Technische Informatik Branch to a labeled instruction if a condition is true Otherwise, continue sequentially beq rs, rt, L1 if (rs == rt) branch to

More information

Common Problems on Homework

Common Problems on Homework MIPS Functions Common Problems on Homework 1.3: Convert -3000 ten to binary in 8bit, 16bit, and 32bit Even though it overflows with 8bits, there is plenty of room with 16 and 32 bit. Common Problems on

More information

Lecture 6: Assembly Programs

Lecture 6: Assembly Programs Lecture 6: Assembly Programs Today s topics: Procedures Examples Large constants The compilation process A full example 1 Procedures Local variables, AR, $fp, $sp Scratchpad and saves/restores, $fp Arguments

More information

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

CS61C Machine Structures. Lecture 12 - MIPS Procedures II & Logical Ops. 2/13/2006 John Wawrzynek. www-inst.eecs.berkeley. CS61C Machine Structures Lecture 12 - MIPS Procedures II & Logical Ops 2/13/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L12 MIPS Procedures II / Logical (1)

More information

EE 361 University of Hawaii Fall

EE 361 University of Hawaii Fall C functions Road Map Computation flow Implementation using MIPS instructions Useful new instructions Addressing modes Stack data structure 1 EE 361 University of Hawaii Implementation of C functions and

More information

ECE 2035 A Programming Hw/Sw Systems Fall problems, 8 pages Final Exam 8 December 2014

ECE 2035 A Programming Hw/Sw Systems Fall problems, 8 pages Final Exam 8 December 2014 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

ECE 30 Introduction to Computer Engineering

ECE 30 Introduction to Computer Engineering ECE 30 Introduction to Computer Engineering Study Problems, Set #3 Spring 2015 Use the MIPS assembly instructions listed below to solve the following problems. arithmetic add add sub subtract addi add

More information

ECE 2035 A Programming Hw/Sw Systems Spring problems, 8 pages Final Exam 29 April 2015

ECE 2035 A Programming Hw/Sw Systems Spring problems, 8 pages Final Exam 29 April 2015 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

CDA3100 Midterm Exam, Summer 2013

CDA3100 Midterm Exam, Summer 2013 CDA3100 Midterm Exam, Summer 2013 Name : Instructions: 1. This is a close-book and close-notes exam. 2. You have 75 minutes to answer the questions. 3. Please write down your name on the top of this page

More information

Review of Activation Frames. FP of caller Y X Return value A B C

Review of Activation Frames. FP of caller Y X Return value A B C Review of Activation Frames In general, activation frames are organized like this: HI LO Bookkeeping/preserved registers I/O parameters Locals and temps RA of caller FP of caller Y X Return value A B C

More information

ECE 30 Introduction to Computer Engineering

ECE 30 Introduction to Computer Engineering ECE 30 Introduction to Computer Engineering Study Problems, Set #4 Spring 2015 Note: To properly study and understand the problems below, it is strongly recommended to implement and run your solution (and/or

More information

Compiling Techniques

Compiling Techniques Lecture 10: An Introduction to MIPS assembly 18 October 2016 Table of contents 1 Overview 2 3 Assembly program template.data Data segment: constant and variable definitions go here (including statically

More information

MIPS ISA and MIPS Assembly. CS301 Prof. Szajda

MIPS ISA and MIPS Assembly. CS301 Prof. Szajda MIPS ISA and MIPS Assembly CS301 Prof. Szajda Administrative HW #2 due Wednesday (9/11) at 5pm Lab #2 due Friday (9/13) 1:30pm Read Appendix B5, B6, B.9 and Chapter 2.5-2.9 (if you have not already done

More information

Computer Architecture Instruction Set Architecture part 2. Mehran Rezaei

Computer Architecture Instruction Set Architecture part 2. Mehran Rezaei Computer Architecture Instruction Set Architecture part 2 Mehran Rezaei Review Execution Cycle Levels of Computer Languages Stored Program Computer/Instruction Execution Cycle SPIM, a MIPS Interpreter

More information

Lec 10: Assembler. Announcements

Lec 10: Assembler. Announcements Lec 10: Assembler Kavita Bala CS 3410, Fall 2008 Computer Science Cornell University Announcements HW 2 is out Due Wed after Fall Break Robot-wide paths PA 1 is due next Wed Don t use incrementor 4 times

More information

Q1: /30 Q2: /25 Q3: /45. Total: /100

Q1: /30 Q2: /25 Q3: /45. Total: /100 ECE 2035(A) Programming for Hardware/Software Systems Fall 2013 Exam One September 19 th 2013 This is a closed book, closed note texam. Calculators are not permitted. Please work the exam in pencil and

More information

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam Two 23 October Your Name (please print clearly) Signed.

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam Two 23 October Your Name (please print clearly) Signed. Your Name (please print clearly) This exam will be conducted according to the Georgia Tech Honor Code. I pledge to neither give nor receive unauthorized assistance on this exam and to abide by all provisions

More information

MIPS Instruction Set

MIPS Instruction Set MIPS Instruction Set Prof. James L. Frankel Harvard University Version of 7:12 PM 3-Apr-2018 Copyright 2018, 2017, 2016, 201 James L. Frankel. All rights reserved. CPU Overview CPU is an acronym for Central

More information

CS222: Dr. A. Sahu. Indian Institute of Technology Guwahati

CS222: Dr. A. Sahu. Indian Institute of Technology Guwahati CS222: (a) Activation Record of Merge Sort (b) Architecture Space RISC/CISC Dr. A. Sahu Dept of Comp. Sc. & Engg. Indian Institute of Technology Guwahati 1 Outline Activation Record in Recursion: Merge

More information

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

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA MIPS ISA. In a CPU. (vonneumann) Processor Organization CISC 662 Graduate Computer Architecture Lecture 4 - ISA MIPS ISA Michela Taufer http://www.cis.udel.edu/~taufer/courses Powerpoint Lecture Notes from John Hennessy and David Patterson s: Computer Architecture,

More information

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 The plot thickens Some MIPS instructions you can write cannot be translated to a 32-bit number some reasons why 1) constants are too big 2) relative addresses are too big 3) absolute addresses are outside

More information

CSc 256 Midterm 2 Spring 2012

CSc 256 Midterm 2 Spring 2012 CSc 256 Midterm 2 Spring 2012 NAME: 1a) You are given this MIPS assembly language instruction (i.e., pseudo- instruction): ble $12, 0x20004880, there Translate this MIPS instruction to an efficient sequence

More information

Announcements. EE108B Lecture MIPS Assembly Language III. MIPS Machine Instruction Review: Instruction Format Summary

Announcements. EE108B Lecture MIPS Assembly Language III. MIPS Machine Instruction Review: Instruction Format Summary Announcements EE108B Lecture MIPS Assembly Language III Christos Kozyrakis Stanford University http://eeclass.stanford.edu/ee108b PA1 available, due on Thursday 2/8 Work on you own (no groups) Homework

More information

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA CISC 662 Graduate Computer Architecture Lecture 4 - ISA Michela Taufer http://www.cis.udel.edu/~taufer/courses Powerpoint Lecture Notes from John Hennessy and David Patterson s: Computer Architecture,

More information

Compiling Code, Procedures and Stacks

Compiling Code, Procedures and Stacks Compiling Code, Procedures and Stacks L03-1 RISC-V Recap Computational Instructions executed by ALU Register-Register: op dest, src1, src2 Register-Immediate: op dest, src1, const Control flow instructions

More information

MIPS Assembly Language. Today s Lecture

MIPS Assembly Language. Today s Lecture MIPS Assembly Language Computer Science 104 Lecture 6 Homework #2 Midterm I Feb 22 (in class closed book) Outline Assembly Programming Reading Chapter 2, Appendix B Today s Lecture 2 Review: A Program

More information

CENG3420 Lecture 03 Review

CENG3420 Lecture 03 Review CENG3420 Lecture 03 Review Bei Yu byu@cse.cuhk.edu.hk 2017 Spring 1 / 38 CISC vs. RISC Complex Instruction Set Computer (CISC) Lots of instructions of variable size, very memory optimal, typically less

More information

Shift and Rotate Instructions

Shift and Rotate Instructions Shift and Rotate Instructions Shift and rotate instructions facilitate manipulations of data (that is, modifying part of a 32-bit data word). Such operations might include: Re-arrangement of bytes in a

More information

RISC-V Assembly and Binary Notation

RISC-V Assembly and Binary Notation RISC-V Assembly and Binary Notation L02-1 Course Mechanics Reminders Course website: http://6004.mit.edu All lectures, videos, tutorials, and exam material can be found under Information/Resources tab.

More information

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam Two 21 October 2016

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam Two 21 October 2016 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

CSCI 402: Computer Architectures. Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI.

CSCI 402: Computer Architectures. Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI. CSCI 402: Computer Architectures Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI Recall Big endian, little endian Memory alignment Unsigned

More information

The MIPS Instruction Set Architecture

The MIPS Instruction Set Architecture The MIPS Set Architecture CPS 14 Lecture 5 Today s Lecture Admin HW #1 is due HW #2 assigned Outline Review A specific ISA, we ll use it throughout semester, very similar to the NiosII ISA (we will use

More information

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 The plot thickens Some MIPS instructions you can write cannot be translated to a 32-bit number some reasons why 1) constants are too big 2) relative addresses are too big 3) absolute addresses are outside

More information

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

5/17/2012. Recap from Last Time. CSE 2021: Computer Organization. The RISC Philosophy. Levels of Programming. Stored Program Computers CSE 2021: Computer Organization Recap from Last Time load from disk High-Level Program Lecture-2 Code Translation-1 Registers, Arithmetic, logical, jump, and branch instructions MIPS to machine language

More information

CSc 256 Midterm 2 Fall 2011

CSc 256 Midterm 2 Fall 2011 CSc 256 Midterm 2 Fall 2011 NAME: 1a) You are given a MIPS branch instruction: x: beq $12, $0, y The address of the label "y" is 0x400468. The memory location at "x" contains: address contents 0x40049c

More information

ECE 2035 Programming HW/SW Systems Spring problems, 6 pages Exam One 4 February Your Name (please print clearly)

ECE 2035 Programming HW/SW Systems Spring problems, 6 pages Exam One 4 February Your Name (please print clearly) Your Name (please print clearly) This exam will be conducted according to the Georgia Tech Honor Code. I pledge to neither give nor receive unauthorized assistance on this exam and to abide by all provisions

More information

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

Lecture 2. Instructions: Language of the Computer (Chapter 2 of the textbook) Lecture 2 Instructions: Language of the Computer (Chapter 2 of the textbook) Instructions: tell computers what to do Chapter 2 Instructions: Language of the Computer 2 Introduction Chapter 2.1 Chapter

More information

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

Recap from Last Time. CSE 2021: Computer Organization. Levels of Programming. The RISC Philosophy 5/19/2011 CSE 2021: Computer Organization Recap from Last Time load from disk High-Level Program Lecture-3 Code Translation-1 Registers, Arithmetic, logical, jump, and branch instructions MIPS to machine language

More information

MIPS Reference Guide

MIPS Reference Guide MIPS Reference Guide Free at PushingButtons.net 2 Table of Contents I. Data Registers 3 II. Instruction Register Formats 4 III. MIPS Instruction Set 5 IV. MIPS Instruction Set (Extended) 6 V. SPIM Programming

More information

Programming the processor

Programming the processor CSC258 Week 9 Logistics This week: Lab 7 is the last Logisim DE2 lab. Next week: Lab 8 will be assembly. For assembly labs you can work individually or in pairs. No matter how you do it, the important

More information

MIPS function continued

MIPS function continued MIPS function continued Review Functions Series of related instructions one after another in memory Called through the jal instruction Pointed to by a label like any other Returns by calling Stack Top

More information

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

Stored Program Concept. Instructions: Characteristics of Instruction Set. Architecture Specification. Example of multiple operands Stored Program Concept nstructions: nstructions are bits Programs are stored in memory to be read or written just like data Processor Memory memory for data, programs, compilers, editors, etc. Fetch &

More information

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

ELEC / Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2) ELEC 5200-001/6200-001 Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2) Victor P. Nelson, Professor & Asst. Chair Vishwani D. Agrawal, James J. Danaher Professor Department

More information

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

Today s Lecture. MIPS Assembly Language. Review: What Must be Specified? Review: A Program. Review: MIPS Instruction Formats Today s Lecture Homework #2 Midterm I Feb 22 (in class closed book) MIPS Assembly Language Computer Science 14 Lecture 6 Outline Assembly Programming Reading Chapter 2, Appendix B 2 Review: A Program Review:

More information

ece4750-tinyrv-isa.txt

ece4750-tinyrv-isa.txt ========================================================================== Tiny RISC-V Instruction Set Architecture ========================================================================== # Author :

More information

ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design

ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design Professor Sherief Reda http://scale.engin.brown.edu School of Engineering Brown University Spring 2014 Sources: Computer

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c/su06 CS61C : Machine Structures Lecture #9: MIPS Procedures 2006-07-11 CS 61C L09 MIPS Procedures (1) Andy Carle C functions main() { int i,j,k,m;... i = mult(j,k);... m =

More information

CPS311 - COMPUTER ORGANIZATION. A bit of history

CPS311 - COMPUTER ORGANIZATION. A bit of history CPS311 - COMPUTER ORGANIZATION A Brief Introduction to the MIPS Architecture A bit of history The MIPS architecture grows out of an early 1980's research project at Stanford University. In 1984, MIPS computer

More information

1 5. Addressing Modes COMP2611 Fall 2015 Instruction: Language of the Computer

1 5. Addressing Modes COMP2611 Fall 2015 Instruction: Language of the Computer 1 5. Addressing Modes MIPS Addressing Modes 2 Addressing takes care of where to find data instruction We have seen, so far three addressing modes of MIPS (to find data): 1. Immediate addressing: provides

More information

Reduced Instruction Set Computer (RISC)

Reduced Instruction Set Computer (RISC) Reduced Instruction Set Computer (RISC) Reduced Instruction Set Computer (RISC) Focuses on reducing the number and complexity of instructions of the machine. Reduced number of cycles needed per instruction.

More information

ECE 331 Hardware Organization and Design. Professor Jay Taneja UMass ECE - Discussion 3 2/8/2018

ECE 331 Hardware Organization and Design. Professor Jay Taneja UMass ECE - Discussion 3 2/8/2018 ECE 331 Hardware Organization and Design Professor Jay Taneja UMass ECE - jtaneja@umass.edu Discussion 3 2/8/2018 Study Jams Leader: Chris Bartoli Tuesday 5:30-6:45pm Elab 325 Wednesday 8:30-9:45pm Elab

More information

Do-While Example. In C++ In assembly language. do { z--; while (a == b); z = b; loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero

Do-While Example. In C++ In assembly language. do { z--; while (a == b); z = b; loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero Do-While Example In C++ do { z--; while (a == b); z = b; In assembly language loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero 25 Comparisons Set on less than (slt) compares its source registers

More information

CSE Lecture In Class Example Handout

CSE Lecture In Class Example Handout CSE 30321 Lecture 07-09 In Class Example Handout Part A: A Simple, MIPS-based Procedure: Swap Procedure Example: Let s write the MIPS code for the following statement (and function call): if (A[i] > A

More information

Course Administration

Course Administration Fall 2018 EE 3613: Computer Organization Chapter 2: Instruction Set Architecture Introduction 4/4 Avinash Karanth Department of Electrical Engineering & Computer Science Ohio University, Athens, Ohio 45701

More information

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

MIPS R-format Instructions. Representing Instructions. Hexadecimal. R-format Example. MIPS I-format Example. MIPS I-format Instructions Representing Instructions Instructions are encoded in binary Called machine code MIPS instructions Encoded as 32-bit instruction words Small number of formats encoding operation code (opcode), register

More information

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

Chapter 2. Instructions: Language of the Computer. Adapted by Paulo Lopes Chapter 2 Instructions: Language of the Computer Adapted by Paulo Lopes Instruction Set The repertoire of instructions of a computer Different computers have different instruction sets But with many aspects

More information

ECE468 Computer Organization & Architecture. MIPS Instruction Set Architecture

ECE468 Computer Organization & Architecture. MIPS Instruction Set Architecture ECE468 Computer Organization & Architecture MIPS Instruction Set Architecture ECE468 Lec4.1 MIPS R2000 / R3000 Registers 32-bit machine --> Programmable storage 2^32 x bytes 31 x 32-bit GPRs (R0 = 0) 32

More information

MIPS Functions and the Runtime Stack

MIPS Functions and the Runtime Stack MIPS Functions and the Runtime Stack COE 301 Computer Organization Prof. Muhamed Mudawar College of Computer Sciences and Engineering King Fahd University of Petroleum and Minerals Presentation Outline

More information

QtSPIM and MARS : MIPS Simulators

QtSPIM and MARS : MIPS Simulators QtSPIM and MARS : MIPS Simulators Learning MIPS & SPIM MIPS assembly is a low-level programming language The best way to learn any programming language is to write code We will get you started by going

More information

ECE232: Hardware Organization and Design

ECE232: Hardware Organization and Design ECE232: Hardware Organization and Design Lecture 4: Logic Operations and Introduction to Conditionals Adapted from Computer Organization and Design, Patterson & Hennessy, UCB Overview Previously examined

More information

ECE 2035 Programming Hw/Sw Systems Fall problems, 10 pages Final Exam 9 December 2013

ECE 2035 Programming Hw/Sw Systems Fall problems, 10 pages Final Exam 9 December 2013 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

Computer Architecture. MIPS Instruction Set Architecture

Computer Architecture. MIPS Instruction Set Architecture Computer Architecture MIPS Instruction Set Architecture Instruction Set Architecture An Abstract Data Type Objects Registers & Memory Operations Instructions Goal of Instruction Set Architecture Design

More information

SPIM Procedure Calls

SPIM Procedure Calls SPIM Procedure Calls 22C:60 Jonathan Hall March 29, 2008 1 Motivation We would like to create procedures that are easy to use and easy to read. To this end we will discuss standard conventions as it relates

More information

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

Kernel Registers 0 1. Global Data Pointer. Stack Pointer. Frame Pointer. Return Address. The MIPS Register Set The MIPS R2000 CPU has 32 registers. 31 of these are general-purpose registers that can be used in any of the instructions. The last one, denoted register zero, is defined to contain

More information