Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Computer Architecture & Organization Instructions: Language of Computer Engr. Umbreen Sabir Computer Engineering Department, University of Engg. & Technology Taxila. 1 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Instructions for Making Decisions Distinguishes computer from simple calculator. – Decision making Instructions are if with goto and label. MIPS decision making statements are: – Branch if equal-> beq register1, register2, L1 – Branch not equal-> bne register1, register2, L1 2 Go to label L1, if register1==register2 Go to label L1, if register1!=register2 These two statements are traditionally called Conditional Branches. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir MIPS Control Flow Instructions MIPS conditional branch instructions: bne $s0, $s1, Lbl #go to Lbl if $s0$s1 beq $s0, $s1, Lbl #go to Lbl if $s0=$s1 Ex: Lbl1: 3 if (i==j) h = i + j; bne $s0, $s1, Lbl1 add $s3, $s0, $s1 … 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir MIPS Control Flow Instructions Instruction Format (I format): op 4 rs rt 16 bit offset How is the branch destination address specified? Keep it pending till next chapter…. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Compiling if-then-else into Conditional Branches: In the code below f, g, h, I and j are in registers $s0 through $s4 . C code is – if ( i==j ) f= g + h; else f=g-h; Its assembly notation is: – – – – 5 Bne $s3, $s4, Else # go to Else if I != j add $s0, $s1, $s2 # f= g + h (skipped if i != j). j Exit # go to Exit. Else:sub $s0, $s1, #s2 # f= g – h (skipped if i == j). 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Loops Decisions are also important for iterating a computation. – – 6 Found in loops. Refer to next slide for an example. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Example # 1 C statements are: – While ( save[i] ==k) – i += 1; Assume i and k are in $s3 and $s5 and base of save is in $6. We must multiply i by 4 due to byte addressing problem. We use shift left logical since shifting left by 2 bits multiply by 4. 7 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Example # 1 cont. Assembly code will be: – – – – – – – 8 Loop:sll $t1, $s3, 2 # Temp reg $t1 = 4 * i Add $t1, $t1, $s6 # $t1= address of save[i] Lw $t0, 0( $t1) # Temp reg $t0 = save[i] Bne $t0, $s5, Exit# go to Exit if save[i] != k Add $s3, $s3, 1 # i = i + 1; J Loop # go to Loop Exit: 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Basic Block 9 A sequence of instructions without branches, except possibly at the end, and without branch targets or branch labels, except possibly at the beginning. One of the early phases of compilation is breaking the program into basic blocks. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir More Branch Instructions We have beq, bne, but what about other kinds of branches (e.g., branch-if-less-than)? For this, we need yet another instruction, slt. Set on less than instruction: slt $t0,$s0,$s1 # if $s0 < $s1 then # $t0 = 1 else # $t0 = 0 Instruction format (R format): op 10 rs rt 11/02/2009 rd funct CA&O Lecture 03 by Engr. Umbreen Sabir More Branch Instructions cont. 11 Constant operands are also used in comparisons. Register $zero always has 0, we can compare to zero. To compare to other values, instruction is: Set on less than immediate: slti $t0,$s2,10 # $t0 = 1 if $s2< 10 MIPS doesn’t include branch on less than because it is too complicated. Either it would stretch the clock cycle time or it would take extra clock cycles/instruction. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir More Branch Instructions cont. Can use slt, beq, bne, and the fixed value of 0 in register $zero to create all relative conditions. – less than blt $s1, $s2, Label slt bne – – – 12 $at, $s1, $s2 $at, $zero, Label #$at set to 1 if # $s1 < $s2 less than or equal to ble $s1, $s2, Label greater than bgt $s1, $s2, Label great than or equal to bge $s1, $s2, Label 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Case/switch Statement 13 Case/switch can be implemented through a sequence of conditional tests. More effectively done by jump address table. For this MIPS include a jump register instruction (jr), meaning an unconditional jump to the address specified in a register. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Case/switch Statement MIPS also has an unconditional branch instruction or jump instruction: j label #go to label. Instruction Format (J Format): op 14 26-bit address 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Supporting Procedures in Computer Hardware Procedure: A stored subroutine that performs a specific task based on the parameters with which it is provided. Procedure execution step – – – – – – 15 Place Parameters. Transfer control to the procedure. Acquire storage resources Perform desired task. Place result value. Return control back. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Supporting Procedures in Computer Hardware cont. MIPS register conventions for procedures: – – – MIPS instruction for procedures is jump and link instruction (jal). – 16 $a0 - $a3: argument registers $v0 - $v1: two registers to return values. $ra – return address register It jumps to an address and simultaneously saves the address of following instruction in return register $ra. 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Instructions for Accessing Procedures MIPS procedure call instruction: jal ProcedureAddress #jump n link Machine format (J format): op Then can do procedure return with a jr $ra #return Instruction format (R format): op 17 26 bit address rs funct 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir Next Lecture and Reminders Next lecture – MIPS ISA 18 Assignment Due – 13 Feb 2009 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir END OF LECTURE 3 19 11/02/2009 CA&O Lecture 03 by Engr. Umbreen Sabir