21
Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri, Sep 6, 2019 Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 1 / 21

Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

DecisionsLecture 6

Section 2.7

Robb T. Koether

Hampden-Sydney College

Fri, Sep 6, 2019

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 1 / 21

Page 2: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

1 Decision Structures in C

2 Conditional Branches in MIPS

3 One-Way Decisions

4 Two-Way Decisions

5 Assignment

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 2 / 21

Page 3: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Outline

1 Decision Structures in C

2 Conditional Branches in MIPS

3 One-Way Decisions

4 Two-Way Decisions

5 Assignment

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 3 / 21

Page 4: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Decision Structures in C

Decision Structures in Cif (condition){

true-block}else{

false-block}

The if statement is the basic decision structure in C.The else part is optional.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 4 / 21

Page 5: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Outline

1 Decision Structures in C

2 Conditional Branches in MIPS

3 One-Way Decisions

4 Two-Way Decisions

5 Assignment

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 5 / 21

Page 6: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Conditional Branches in MIPS

Conditional branches are based on comparisons.Two quantities may be related in any of six ways:

Equal (eq)Not equal (ne)Less than (lt)Greater than (gt)Less than or equal to (le)Greater than or equal to (ge)

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 6 / 21

Page 7: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Conditional Branches in MIPS

Instruction Meaningbeq rs,rt,addr Branch if rs == rtbne rs,rt,addr Branch if rs != rtbltz rs,addr Branch if rs < 0blez rs,addr Branch if rs <= 0bgtz rs,addr Branch if rs > 0bgez rs,addr Branch if rs >= 0

MIPS provides a number of conditional branch instructions.Notice that the branch occurs if the condition is satisfied, which isthe opposite of C.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 7 / 21

Page 8: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Outline

1 Decision Structures in C

2 Conditional Branches in MIPS

3 One-Way Decisions

4 Two-Way Decisions

5 Assignment

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 8 / 21

Page 9: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Example (One-way Branch)if (a == 10)

a = 5;

Translate the above C code into MIPS.Assume that a is stored in $s0.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 9 / 21

Page 10: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Example (Unstructured C)if (a != 10) goto not10;a = 5;

not10:

Write the code in unstructured C.Note that we branch if a does not equal 10.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 10 / 21

Page 11: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Example (One-way Branch)li $t0, 10 # Load 10bne $s0, $t0, not10 # Branch if a != 10li $s0, 5 # Set a = 5

not10:

Assume that a is in $s0.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 11 / 21

Page 12: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Pseudo bne Instructionbne sr,imm,label # Branch if sr != imm

Example (One-way Branch)bne $s0, 10, not10 # Branch if a != 10li $s0, 5 # Set a = 5

not10:

There is also a pseudo branch-not-equal instruction that takes animmediate value.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 12 / 21

Page 13: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

The Unconditional Branch

The Unconditional Branchj label # Jump to label

The jump instruction (j) is an unconditional branch.It will redirect execution to the statement with the label.The jump is necessary for a two-way decision structure.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 13 / 21

Page 14: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Outline

1 Decision Structures in C

2 Conditional Branches in MIPS

3 One-Way Decisions

4 Two-Way Decisions

5 Assignment

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 14 / 21

Page 15: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Example (Two-way Branch)if (a == b)

c = d + e;else

c = d - e;

Translate the above C code into MIPS.Assume

a is in $s0b is in $s1c is in $t0d is in $s2e is in $s3.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 15 / 21

Page 16: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Example (Two-way Branch)if (a != b) goto dec_else;c = d + e;goto dec_done;

dec_else:c = d - e;

dec_done:

Write the code in unstructured C.Note that we change the condition from a == b to a != b.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 16 / 21

Page 17: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Example (Two-way Branch)bne $s0, $s1, dec_else # Branch if a != badd $t0, $s2, $s3 # c = d + ej dec_done

dec_else:sub $t0, $s2, $s3 # c = d - e

dec_done:

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 17 / 21

Page 18: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Example

Example (Two-way Branch)beq $s0, $s1, dec_else # Branch if a == bsub $t0, $s2, $s3 # c = d - ej dec_done

dec_else:add $t0, $s2, $s3 # c = d + e

dec_done:

Or we could keep the condition the same as in C, but reverse theorder of the cases.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 18 / 21

Page 19: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Examples

Write a MIPS program that will assign a letter grade to a testscore, using a 10-point scale.Write a MIPS program that will read three integers and displaythem in ascending order.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 19 / 21

Page 20: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Outline

1 Decision Structures in C

2 Conditional Branches in MIPS

3 One-Way Decisions

4 Two-Way Decisions

5 Assignment

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 20 / 21

Page 21: Lecture 6 Section 2.7 Robb T. Koether - people.hsc.edupeople.hsc.edu/faculty-staff/robbk/Coms361/Lectures...Decisions Lecture 6 Section 2.7 Robb T. Koether Hampden-Sydney College Fri,

Assignment

AssignmentRead Section 2.7.

Robb T. Koether (Hampden-Sydney College) Decisions Fri, Sep 6, 2019 21 / 21