Control Structures Computer Organization I 1 October 2009 ©2006-09 McQuain, Feng & Ribbens Conditional Control Structure if ( i < j ) goto A; else.

Slides:



Advertisements
Similar presentations
Henk Corporaal TUEindhoven 2011
Advertisements

Goal: Write Programs in Assembly
MIPS assembly. Review  Lat lecture, we learnt  addi,  and, andi, or, ori, xor, xori, nor,  beq, j, bne  An array is stored sequentially in the memory.
CS/COE0447 Computer Organization & Assembly Language
Arrays First step is to reserve sufficient space for the array.
1 Procedure Calls, Linking & Launching Applications Lecture 15 Digital Design and Computer Architecture Harris & Harris Morgan Kaufmann / Elsevier, 2007.
Chapter 2 — Instructions: Language of the Computer — 1 Branching Far Away If branch target is too far to encode with 16-bit offset, assembler rewrites.
CMPE 325 Computer Architecture II Cem Ergün Eastern Mediterranean University Assembly Language (cont)
CS1104 – Computer Organization PART 2: Computer Architecture Lecture 5 MIPS ISA & Assembly Language Programming.
SPIM and MIPS programming
Chapter 2 Instructions: Language of the Computer
1 Nested Procedures Procedures that don't call others are called leaf procedures, procedures that call others are called nested procedures. Problems may.
Lecture 8: MIPS Instruction Set
Feb 18, 2009 Lecture 4-2 instruction set architecture (Part II of [Parhami]) MIPS encoding of instructions Spim simulator more examples of MIPS programming.
ENEE350 Spring07 1 Ankur Srivastava University of Maryland, College Park Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005.”
Computer Architecture CPSC 321 E. J. Kim. Overview Logical Instructions Shifts.
RISC Concepts, MIPS ISA and the Mini–MIPS project
Data Transfer & Decisions I (1) Fall 2005 Lecture 3: MIPS Assembly language Decisions I.
IT253: Computer Organization Lecture 4: Instruction Set Architecture Tonga Institute of Higher Education.
Lecture 4: MIPS Instruction Set Reminders: –Homework #1 posted: due next Wed. –Midterm #1 scheduled Friday September 26 th, 2014 Location: TODD 430 –Midterm.
Procedure Basics Computer Organization I 1 October 2009 © McQuain, Feng & Ribbens Procedure Support From previous study of high-level languages,
Chapter 10 The Assembly Process. What Assemblers Do Translates assembly language into machine code. Assigns addresses to all symbolic labels (variables.
April 23, 2001Systems Architecture I1 Systems Architecture I (CS ) Lecture 9: Assemblers, Linkers, and Loaders * Jeremy R. Johnson Mon. April 23,
Small constants are used quite frequently (50% of operands) e.g., A = A + 5; B = B + 1; C = C - 18; Solutions? Why not? put 'typical constants' in memory.
MIPS coding. Review Shifting – Shift Left Logical (sll) – Shift Right Logical (srl) – Moves all of the bits to the left/right and fills in gap with 0’s.
Chapter 2 Decision-Making Instructions (Instructions: Language of the Computer Part V)
 1998 Morgan Kaufmann Publishers MIPS arithmetic All instructions have 3 operands Operand order is fixed (destination first) Example: C code: A = B +
Computer Architecture CSE 3322 Lecture 3 Assignment: 2.4.1, 2.4.4, 2.6.1, , Due 2/3/09 Read 2.8.
Computer Organization and Design Addressing Modes Montek Singh Sep 30, 2015 Lecture 7.
Computer Organization Instructions Language of The Computer (MIPS) 2.
MIPS coding. slt, slti slt $t3, $t1, $t2 – set $t3 to be 1 if $t1 < $t2 ; else clear $t3 to be 0. – “Set Less Than.” slti $t3, $t1, 100 – set $t3 to be.
Control Structures Computer Organization I 1 October 2009 © McQuain, Feng & Ribbens Conditional Control Structure if ( i == j ) h = i + j;
Addressing Modes. Register Addressing Immediate Addressing Base Addressing Indexed Addressing PC-Relative Addressing.
The Assembly Process Computer Organization and Assembly Language: Module 10.
Indexed Addressing addition to implementing new instructions, the extended assembler implements a new addressing mode. This is indexed addressing, a mode.
Computer Organization Instructions Language of The Computer (MIPS) 2.
Lecture 16: 10/29/2002CS170 Fall CS170 Computer Organization and Architecture I Ayman Abdel-Hamid Department of Computer Science Old Dominion University.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
Intro Assembly Computer Organization I 1 June 2010 © McQuain, Feng & Ribbens MIPS Hello World # Program: Hello, World!.data # data declaration.
CSCI206 - Computer Organization & Programming
MIPS Instruction Set Advantages
MIPS Coding Continued.
Lecture 4: MIPS Instruction Set
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
Conditional Control Structure
MIPS coding.
Lecture 4: MIPS Instruction Set
CSCI206 - Computer Organization & Programming
Henk Corporaal TUEindhoven 2010
MIPS Instruction Encoding
ECE232: Hardware Organization and Design
MIPS coding.
MIPS Instruction Encoding
Instruction encoding The ISA defines Format = Encoding
MIPS coding.
MIPS Coding.
MIPS Coding.
Instruction encoding The ISA defines Format = Encoding
COMS 361 Computer Organization
Instruction encoding The ISA defines Format = Encoding
MIPS Assembly.
Instruction encoding The ISA defines Format = Encoding
MIPS Coding Continued.
MIPS coding.
MIPS assembly.
Addressing Modes Don Porter.
7/6/
Conditional Control Structure
MIPS instructions.
Conditional Branching (beq)
Presentation transcript:

Control Structures Computer Organization I 1 October 2009 © McQuain, Feng & Ribbens Conditional Control Structure if ( i < j ) goto A; else goto B; # $s3 == i, $s4 == j slt $t1, $s3, $s4 beq $zero, $t1, B A: # code... b C B: # code... C: if ( i == j ) h = i + j; bne $s0, $s1, Miss add $s3, $s0, $s1 Miss:....

Control Structures Computer Organization I 2 October 2009 © McQuain, Feng & Ribbens for Loop Example int Sum = 0; for (int i = 1; i <= N; ++i) { Sum = Sum + i; } # $s0 == Sum, $s1 == N, $t0 == i move $s0, $zero # register assignment lw $s1, N # assume global symbol li $t0, 1 # literal assignment loop: beq $t0, $s1, done # loop test add $s0, $s0, $t0 # Sum = Sum + i addi $t0, $t0, 1 # ++i b loop # restart loop done:

Control Structures Computer Organization I 3 October 2009 © McQuain, Feng & Ribbens for Loop Improved int Sum = 0; for (int i = 1; i <= N; ++i) { Sum = Sum + i; } # $s0 == Sum, $s1 == N, $t0 == i move $s0, $zero # register assignment lw $s1, N # assume global symbol beq $s1, $zero, done # check for trivial case li $t0, 1 # literal assignment loop: add $s0, $s0, $t0 # Sum = Sum + i addi $t0, $t0, 1 # ++i bne $t0, $s1, loop # loop test done:

Control Structures Computer Organization I 4 October 2009 © McQuain, Feng & Ribbens Program Termination Unlike the high-level languages you are accustomed to, MIPS assembly does not include an instruction, or block syntax, to terminate the program execution. MIPS programs can be terminated by making a system call: ## Exit li $v0, 10 # load code for exit system call in $v0 syscall # make the system call to exit Without such code, the system could attempt to continue execution into the memory words that followed the final instructions of the program. That rarely produces graceful results.

Control Structures Computer Organization I 5 October 2009 © McQuain, Feng & Ribbens Pseudo-Instructions You may have noticed something is odd about a number of the MIPS instructions that have been covered so far. For example: li $t0, 0xFFFFFFFF Now, logically there's nothing wrong with wanting to place a 32-bit value into one of the registers. But there's certainly no way the instruction above could be translated into a 32-bit machine instruction, since the immediate value alone would require 32 bits. This is an example of a pseudo-instruction. A MIPS assembler, or MARS, may be designed to support such extensions that make it easier to write complex programs. In effect, the assembler supports an extended MIPS architecture that is more sophisticated than the actual MIPS architecture of the underlying hardware. Of course, the assembler must be able to translate every pseudo-instruction into a sequence of valid MIPS assembly instructions.

Control Structures Computer Organization I 6 October 2009 © McQuain, Feng & Ribbens Pseudo-Instruction Examples move $t1, $t2 # $t1 <-- $t2 li $t1, # $t1 = 32-bit imm value or $t1, $t2, $zero # recall: x OR 0 == x # e.g., suppose is 0x23A0FB18 # # The assembler sometimes needs a register in which it can # store temporary values. The register $at is reserved for # such use. lui $at, 0x23A0 # put upper byte in upper byte of reg, # and 0s in the lower byte ori $t1, $at, 0xFB18 # put lower byte into reg

Control Structures Computer Organization I 7 October 2009 © McQuain, Feng & Ribbens We'd like to be able to load a 32-bit constant into a register Must use two instructions, new "load upper immediate" instruction lui $t0, # ori low-order bits filled with zeros lui and ori Details Then must get the lower order bits right, i.e., ori $t0, $t0, #