Typy danych. Data types: Literals:



Similar documents
MIPS Assembly Code Layout

Introduction to MIPS Assembly Programming

Reduced Instruction Set Computer (RISC)

Lab Work 2. MIPS assembly and introduction to PCSpim

Computer Systems Architecture

Translating C code to MIPS

Instruction Set Architecture. or How to talk to computers if you aren t in Star Trek

Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings:

Lecture 8: Binary Multiplication & Division

5 MIPS Assembly Language

Instruction Set Architecture

Winter 2002 MID-SESSION TEST Friday, March 1 6:30 to 8:00pm

COMP 303 MIPS Processor Design Project 4: MIPS Processor Due Date: 11 December :59

Review: MIPS Addressing Modes/Instruction Formats

Exceptions in MIPS. know the exception mechanism in MIPS be able to write a simple exception handler for a MIPS machine

THUMB Instruction Set

Lecture Outline. Stack machines The MIPS assembly language. Code Generation (I)

Assembly Language Programming

An Introduction to Assembly Programming with the ARM 32-bit Processor Family

MIPS Assembler and Simulator

What to do when I have a load/store instruction?

Introduction to MIPS Programming with Mars

More MIPS: Recursion. Computer Science 104 Lecture 9

A single register, called the accumulator, stores the. operand before the operation, and stores the result. Add y # add y from memory to the acc

Arithmetic in MIPS. Objectives. Instruction. Integer arithmetic. After completing this lab you will:

M A S S A C H U S E T T S I N S T I T U T E O F T E C H N O L O G Y DEPARTMENT OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE

Instruction Set Design

Chapter 7D The Java Virtual Machine

Instruction Set Architecture (ISA) Design. Classification Categories

CPU Organization and Assembly Language

2) Write in detail the issues in the design of code generator.

PCSpim Tutorial. Nathan Goulding-Hotta v0.1

Instruction Set Reference

1 Classical Universal Computer 3

1 The Java Virtual Machine

How To Write An Array In A Microsoft Zil

X86-64 Architecture Guide

CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08

Instruction Set Architecture (ISA)

Intel 8086 architecture

MIPS Assembly Language Programming CS50 Discussion and Project Book. Daniel J. Ellard

CSE 141 Introduction to Computer Architecture Summer Session I, Lecture 1 Introduction. Pramod V. Argade June 27, 2005

Faculty of Engineering Student Number:

HC12 Assembly Language Programming

Divide: Paper & Pencil. Computer Architecture ALU Design : Division and Floating Point. Divide algorithm. DIVIDE HARDWARE Version 1

Comp 255Q - 1M: Computer Organization Lab #3 - Machine Language Programs for the PDP-8

8085 INSTRUCTION SET

Chapter 2 Topics. 2.1 Classification of Computers & Instructions 2.2 Classes of Instruction Sets 2.3 Informal Description of Simple RISC Computer, SRC

Syscall 5. Erik Jonsson School of Engineering and Computer Science. The University of Texas at Dallas

Introduction to the Altera Nios II Soft Processor. 1 Introduction. For Quartus II 11.1

MACHINE ARCHITECTURE & LANGUAGE

A Tiny Guide to Programming in 32-bit x86 Assembly Language

Chapter 5 Instructor's Manual

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

M6800. Assembly Language Programming

Figure 1: Graphical example of a mergesort 1.

C Compiler Targeting the Java Virtual Machine

Microcontroller Basics A microcontroller is a small, low-cost computer-on-a-chip which usually includes:

The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway

EECS 427 RISC PROCESSOR

CS201: Architecture and Assembly Language

Assembly Language: Function Calls" Jennifer Rexford!

First Bytes Programming Lab 2

Lecture 3 Addressing Modes, Instruction Samples, Machine Code, Instruction Execution Cycle

Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z)

We will use the accumulator machine architecture to demonstrate pass1 and pass2.

UNIVERSITY OF CALIFORNIA, DAVIS Department of Electrical and Computer Engineering. EEC180B Lab 7: MISP Processor Design Spring 1995

612 CHAPTER 11 PROCESSOR FAMILIES (Corrisponde al cap Famiglie di processori) PROBLEMS

Informatica e Sistemi in Tempo Reale

A SystemC Transaction Level Model for the MIPS R3000 Processor

Sources: On the Web: Slides will be available on:

Numeral Systems. The number twenty-five can be represented in many ways: Decimal system (base 10): 25 Roman numerals:

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

64-Bit NASM Notes. Invoking 64-Bit NASM

Chapter 2: Elements of Java

An Overview of Stack Architecture and the PSC 1000 Microprocessor

MACHINE INSTRUCTIONS AND PROGRAMS

PROBLEMS (Cap. 4 - Istruzioni macchina)

How It All Works. Other M68000 Updates. Basic Control Signals. Basic Control Signals

The Java Virtual Machine (JVM) Pat Morin COMP 3002

EE361: Digital Computer Organization Course Syllabus

Computer Science 281 Binary and Hexadecimal Review

EE282 Computer Architecture and Organization Midterm Exam February 13, (Total Time = 120 minutes, Total Points = 100)

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?

Debugging of Application Programs on Altera s DE-Series Boards. 1 Introduction

Efficient Low-Level Software Development for the i.mx Platform

Introduction to Java

Developer Suite ARM. Assembler Guide. Version 1.2. Copyright 2000, 2001 ARM Limited. All rights reserved. ARM DUI 0068B

x64 Cheat Sheet Fall 2015

Solution for Homework 2

SMIPS Processor Specification

VB.NET Programming Fundamentals

Instruction Set Architecture

Computer Organization and Architecture

CS352H: Computer Systems Architecture

ALLIED PAPER : DISCRETE MATHEMATICS (for B.Sc. Computer Technology & B.Sc. Multimedia and Web Technology)

Overview. CISC Developments. RISC Designs. CISC Designs. VAX: Addressing Modes. Digital VAX

Computer organization

Machine-Code Generation for Functions

Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2

Transcription:

Lab 10 MIPS32

Typy danych Data types: Instructions are all 32 bits byte(8 bits), halfword (2 bytes), word (4 bytes) a character requires 1 byte of storage an integer requires 1 word (4 bytes) of storage Literals: numbers entered as is. e.g. 4 characters enclosed in single quotes. e.g. 'b' Strings enclosed in double quotes. e.g. "A string"

Rejestry 32 general-purpose registers register preceded by $ in assembly language instruction two formats for addressing: using register number e.g. $0 through $31 using equivalent names e.g. $t1, $sp special registers Lo and Hi used to store result of multiplication and division not directly addressable; contents accessed with special instruction mfhi ("move from Hi") and mflo ("move from Lo") stack grows from high memory to low memory

Register Number Alternative Name Description 0 zero the value 0 1 $at (assembler temporary) reserved by the assembler 2-3 $v0 - $v1 (values) from expression evaluation and function results 4-7 $a0 - $a3 8-15 $t0 - $t7 16-23 $s0 - $s7 24-25 $t8 - $t9 (arguments) First four parameters for subroutine. Not preserved across procedure calls (temporaries) Caller saved if needed. Subroutines can use w/out saving. Not preserved across procedure calls (saved values) - Callee saved. A subroutine using one of these must save original and restore it before exiting. Preserved across procedure calls (temporaries) Caller saved if needed. Subroutines can use w/out saving. These are in addition to $t0 - $t7 above. Not preserved across procedure calls. 26-27 $k0 - $k1 reserved for use by the interrupt/trap handler 28 $gp 29 $sp 30 $s8/$fp global pointer. Points to the middle of the 64K block of memory in the static data segment. stack pointer Points to last location on the stack. saved value / frame pointer Preserved across procedure calls 31 $ra return address

Struktura programu just plain text file with data declarations, program code (name of file should end in suffix.s to be used with SPIM simulator) data declaration section followed by program code section Data Declarations placed in section of program identified with assembler directive.data declares variable names used in program; storage allocated in main memory (RAM) Code placed in section of text identified with assembler directive.text contains program code (instructions) starting point for code e.g.ecution given label main: ending point of main code should use exit system call (see below under System Calls) Comments anything following # on a line

.data # variable declarations follow this line #....text # instructions follow this line main: # indicates start of code # (first instruction to execute) #... # End of program, leave a blank line afterwards

Instrukcje ładowania/zapisu RAM access only allowed with load and store instructions all other instructions use register operands load: lw register_destination, RAM_source #copy word (4 bytes) at source RAM location to destination register. lb register_destination, RAM_source #copy byte at source RAM location to low-order byte of destination register, # and sign-e.g.tend to higher-order bytes store word: sw register_source, RAM_destination #store word in source register into RAM destination sb register_source, RAM_destination #store byte (low-order) in source register into RAM destination load immediate: li register_destination, value #load immediate value into destination register

Tryby adresowania load address: la $t0, var1 copy RAM address of var1 (presumably a label defined in the program) into register $t0 indirect addressing: lw $t2, ($t0) load word at RAM address contained in $t0 into $t2 sw $t2, ($t0) store word in register $t2 into RAM at address contained in $t0 based or indexed addressing: lw $t2, 4($t0) load word at RAM address ($t0+4) into register $t2 "4" gives offset from address in register $t0 sw $t2, -12($t0) store word in register $t2 into RAM at address ($t0-12) negative offsets are fine

Instrukcje arytmetyczne all operands are registers; no RAM or indirect addressing - operand size is word (4 bytes) add $t0,$t1,$t2 # $t0 = $t1 + $t2; add as signed (2's complement) integers sub $t2,$t3,$t4 # $t2 = $t3 - $t4 addi $t2,$t3, 5 # $t2 = $t3 + 5; "add immediate" (no sub immediate) addu $t1,$t6,$t7 # $t1 = $t6 + $t7; add as unsigned integers subu $t1,$t6,$t7 # $t1 = $t6 + $t7; subtract as unsigned integers mult $t3,$t4 # multiply 32-bit quantities in $t3 and $t4, and store 64-bit result in special registers Lo and Hi: (Hi,Lo) = $t3 * $t4 div $t5,$t6 # Lo = $t5 / $t6 (integer quotient) # Hi = $t5 mod $t6 (remainder) mfhi $t0 # move quantity in special register Hi to $t0: $t0 = Hi mflo $t1 # move quantity in special register Lo to $t1: $t1 = Lo # used to get at result of product or quotient move $t2,$t3 # $t2 = $t3

Instrukcje sterujące Branches comparison for conditional branches is built into instruction b target # unconditional branch to program label target beq $t0,$t1,target # branch to target if $t0 = $t1 blt $t0,$t1,target # branch to target if $t0 < $t1 ble $t0,$t1,target # branch to target if $t0 <= $t1 bgt $t0,$t1,target # branch to target if $t0 > $t1 bge $t0,$t1,target # branch to target if $t0 >= $t1 bne $t0,$t1,target # branch to target if $t0 <> $t1 Jumps j target # unconditional jump to program label target jr $t3 # jump to address contained in $t3 ("jump register") Subroutine Calls subroutine call: "jump and link" instruction jal sub_label # "jump and link" copy program counter (return address) to register $ra (return address register) jump to program statement at sub_label subroutine return: "jump register" instruction jr $ra # "jump register" jump to return address in $ra (stored by jal instruction)

Wywołania systemowe Service Code in $v0 Arguments print_int 1 $a0 = integer to be printed print_float 2 $f12 = float to be printed print_double 3 $f12 = double to be printed print_string 4 $a0 = address of string in memory read_int 5 read_float 6 read_double 7 read_string 8 $a0 = memory address of string input buffer $a1 = length of string buffer (n) Results integer returned in $v0 float returned in $v0 double returned in $v0 sbrk 9 $a0 = amount address in $v0 exit 10