Pseudo instructions.

Slides:



Advertisements
Similar presentations
CDA 3100 Recitation Week 8. Question 1.data A:.word 21,3,2,9,100,22,6,15,33,90.text.globl main main: la $a0, A li $a1, 17 li $a2, 10 jal funct li $v0,
Advertisements

Deeper Assembly: Addressing, Conditions, Branching, and Loops
MIPS Assembly Language CPSC 321 Computer Architecture Andreas Klappenecker.
5Z032 Processor Design SPIM, a MIPS simulator Henk Corporaal
Comp Sci Floating Point Arithmetic 1 Ch. 10 Floating Point Unit.
Computer Organization CS224 Fall 2012 Lesson 19. Floating-Point Example  What number is represented by the single-precision float …00 
05/03/2009CA&O Lecture 8,9,10 By Engr. Umbreen sabir1 Computer Arithmetic Computer Engineering Department.
Arithmetic in Computers Chapter 4 Arithmetic in Computers2 Outline Data representation integers Unsigned integers Signed integers Floating-points.
SPIM and MIPS programming
MIPS Function Continued
The University of Adelaide, School of Computer Science
Assembly Language Working with the CPU.
MIPS Coding. Exercise – the bubble sort 5/8/2015week04-3.ppt2.
Comp Sci instruction encoding 1 Instruction Encoding MIPS machine language Binary encoding of instructions MIPS instruction = 32 bits Three instruction.
9/29: Lecture Topics Memory –Addressing (naming) –Address space sizing Data transfer instructions –load/store on arrays on arrays with variable indices.
Registers and MAL Lecture 12. The MAL Architecture MAL is a load/store architecture. MAL supports only those addressing modes supported by the MIPS RISC.
MIPS I/O and Interrupt. .data val1:.float 0.6 val2:.float 0.8 msg_done:.asciiz "done\n".text.globl main main: li.s $f0, mfc1 $a0, $f0 jal calsqrt.
In Class Execise. .data A:.word 0,1,2,3,4,5,6,7,8,9.text.globl main main: la $a0,A li $a1,6 li $a2,5 jal onUpStream done: li $v0, 10# exit syscall onUpStream:
April 23, 2001Systems Architecture I1 Systems Architecture I (CS ) Lecture 9: Assemblers, Linkers, and Loaders * Jeremy R. Johnson Mon. April 23,
Informationsteknologi Friday, September 28, 2007Computer Architecture I - Class 21 Today’s class More assembly language programming.
MIPS mul div, and MIPS floating point instructions.
Pseudo instructions. MIPS supports pseudo instructions. We have seen some like – li $t0, 4 which set $t0 to 4. – la $t0, A which puts the address of label.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
Review. Interger Number Representations To convert an unsigned decimal number to binary: you divide the number N by 2, let the remainder be the first.
Computer Organization CS345 David Monismith Based upon notes by Dr. Bill Siever and notes from the Patternson and Hennessy Text.
MIPS Coding. Exercise – the bubble sort 7/9/2016week04-3.ppt2.
MIPS Programming.
/ Computer Architecture and Design
Deeper Assembly: Addressing, Conditions, Branching, and Loops
System Calls & Arithmetic
CSCI206 - Computer Organization & Programming
Morgan Kaufmann Publishers Arithmetic for Computers
MIPS Instruction Set Advantages
Computer Architecture & Operations I
MIPS floating point instructions
MIPS Coding Continued.
Computer Organization and Design Instruction Sets - 2
MIPS instructions.
/ Computer Architecture and Design
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
Computer Organization and Design Instruction Sets
CSCI206 - Computer Organization & Programming
MIPS coding.
MIPS I/O and Interrupt.
Final Review.
SPIM Syscalls.
Computer Architecture Computer Science & Engineering
Review.
MPIS Instructions Functionalities of instructions Instruction format
MIPS Functions.
ECE232: Hardware Organization and Design
MIPS Functions.
Pseudo instructions.
Review.
Instruction encoding The ISA defines Format = Encoding
MIPS Functions.
MIPS Procedures.
Review.
MIPS Coding.
MIPS function continued
MIPS Functions.
Flow of Control -- Conditional branch instructions
MIPS Coding.
MIPS I/O and Interrupt.
Flow of Control -- Conditional branch instructions
MIPS Coding Continued.
MIPS coding.
9/27: Lecture Topics Memory Data transfer instructions
MIPS function continued
MIPS Functions.
Presentation transcript:

Pseudo instructions

Pseudo instructions MIPS supports pseudo instructions. We have seen some like li $t0, 4 which set $t0 to 4. la $t0, A which puts the address of label A (a 32-bit value) into $t0. bgt $t0, $t1, L1 which goes to L1 if $t0 > $t1

Pseudo instructions Pseudo instructions are not real instructions implemented in hardware. They are created to make the program more readable. A pseudo instruction usually (not always) maps to several real instructions. The mapping is one-to-one.

Pseudo instructions For example, translate to but what should li $t0, 4 translate to ori $t0, $0, 4 but what should li $t0, 90000 translate to?

Pseudo instructions So li $t0, 90000 translates to lui $1, 1 #load upper 16 bits ori $t0, $1, 24464 The special register $1 is $at and should only be used for pseudo instructions.

Pseudo instructions How to translate ``lw $t0, val’’ ?

MIPS mul div, and MIPS floating point instructions

Multiply and Division Instructions mul rd, rs, rt put the result of rs times rt in rd div rd, rs, rt A pseudo instruction put the quotient of rs/rt into rd

hi and lo mult rs,rt div rs, rt put the high word in hi and low word in lo. div rs, rt put the remainder in hi and quotient in lo.

Load and Store Load or store from a memory location (pseudoinstruction ). Just load the 32 bits into the register. l.s $f0, val s.s $f0, val Load immediate number (pseudoinstruction ) li.s $f0, 0.5

Print and Read Print: Read li $v0, 2 li.s $f12, 0.5 syscall li $v0, 6 (the read will be in $f0)

Arithmetic Instructions abs.s $f0, $f1 add.s $f0, $f1, $f2 sub.s $f0, $f1, $f2 mul.s $f0, $f1, $f2 div.s $f0, $f1, $f2 neg.s $f0, $f1

Data move mov.s $f0, $f1 copy $f1 to $f0. mfc1 $t0, $f0 copy $f0 to $t0. mtc1 $t0, $f0 copy $t0 to $f0.

Convert to integer and from integer cvt.s.w $f0, $f1 convert the 32 bit in $f1 currently representing an integer to float of the same value and store in $f0 cvt.w.s $f0, $f1 the reverse

Comparison instructions c.lt.s $f0,$f1 set a flag in coprocessor 1if $f0 < $f1, else clear it. The flag will stay until set or cleared next time c.le.s $f0,$f1 set flag if $f0 <= $f1, else clear it bc1t L1 branch to L1 if the flag is set bc1f L1 branch to L1 if the flag is 0

Computing the square root of a number n The Newton’s method x’=(x+n/x)/2 For any n, guess an initial value of x as the sqrt of n and keep on updating x until is the difference between the two updates are very close. The idea is that x’=x-f(x)/f’(x), where f(x) is x2-n=0.

msg_done: .asciiz "done\n" .text .globl main main: li.s $f0, 361.0 .data val1: .float 0.6 val2: .float 0.8 msg_done: .asciiz "done\n" .text .globl main main: li.s $f0, 361.0 mfc1 $a0, $f0 jal calsqrt done: mtc1 $v0, $f12 li $v0,2 syscall eixt: li $v0,10 # calsqrt: # calculating the square root of n # using the formular x'=(x+n/x)/2 # loop until |x'-x| < 0.001 calsqrt: addi $sp, $sp, -24 swc1 $f0, 20($sp) swc1 $f1, 16($sp) swc1 $f2, 12($sp) swc1 $f3, 8($sp) swc1 $f20, 4($sp) swc1 $f21, 0($sp) mtc1 $a0, $f0 # $f0 gets n li.s $f20, 2.0 # $f20 storing constant 2 for dividing li.s $f21, 0.001 # $f21 storing constant 0.001 for exit comparision div.s $f1, $f0, $f20 # $f1 gets n/2 calsqrtloop: div.s $f2, $f0, $f1 # $f2 gets n/x add.s $f2, $f2, $f1 # $f2 gets n/x + x div.s $f2, $f2, $f20 # $f2 gets x'=(n/x + x)/2 sub.s $f3, $f2, $f1 # $f3 gets x'-x abs.s $f3, $f3 # $f3 gets |x'-x| c.lt.s $f3, $f21 # set the flag if |x'-x| < 0.001 bc1t calsqrtdone mov.s $f1, $f2 j calsqrtloop calsqrtdone: mfc1 $v0, $f2 lwc1 $f0, 20($sp) lwc1 $f1, 16($sp) lwc1 $f2, 12($sp) lwc1 $f3, 8($sp) lwc1 $f20, 4($sp) lwc1 $f21, 0($sp) addi $sp, $sp, 24 jr $ra