Chapter 5 Data Organization: The Load and Store Instructions

Similar documents
Chapter 4 Simple Calculations

Xuan Guo. CSC 3210 Computer Organization and Programming Georgia State University. March 12, Xuan Guo

Lecture 5 C Programming Language

Computer Architecture

Segments Proofs Reference

CS3350B Computer Architecture MIPS Instruction Representation

Rui Wang, Assistant professor Dept. of Information and Communication Tongji University.

Reduced Instruction Set Computer (RISC)

Memory, Arrays & Pointers

Reduced Instruction Set Computer (RISC)

Pointers & Arrays. CS2023 Winter 2004

CSCI 402: Computer Architectures

Pointers. CS2023 Winter 2004

CS107 Handout 13 Spring 2008 April 18, 2008 Computer Architecture: Take II

Chapter 2A Instructions: Language of the Computer

Lecture XXI: I/O (1) Xuan Guo. CSC 3210 Computer Organization and Programming Georgia State University. April 7, Xuan Guo. Lecture XXI: I/O (1)

We will study the MIPS assembly language as an exemplar of the concept.

COMPUTER APPLICATION

Computer Organization MIPS ISA

CSIS1120A. 10. Instruction Set & Addressing Mode. CSIS1120A 10. Instruction Set & Addressing Mode 1

SPARC Architecture. SPARC Registers

CSCI 402: Computer Architectures. Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI.

Informatics Ingeniería en Electrónica y Automática Industrial

6.096 Introduction to C++ January (IAP) 2009

Machine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine

Arrays Arrays and pointers Loops and performance Array comparison Strings. John Edgar 2

Compiler Design. Homework 1. Due Date: Thursday, January 19, 2006, 2:00

231 Spring Final Exam Name:

COS 140: Foundations of Computer Science

Instruction Sets: Characteristics and Functions Addressing Modes

UNIT- 3 Introduction to C++

CS201- Introduction to Programming Current Quizzes

Computer Programming. C Array is a collection of data belongings to the same data type. data_type array_name[array_size];

High Performance Computing in C and C++

Assembly Language Programming. CPSC 252 Computer Organization Ellen Walker, Hiram College

Math 230 Assembly Programming (AKA Computer Organization) Spring 2008

Fundamentals of Programming Session 20

CSE 30 Spring 2007 Final Exam

Objectives. Chapter 2: Basic Elements of C++ Introduction. Objectives (cont d.) A C++ Program (cont d.) A C++ Program

OUTLINES. Variable names in MATLAB. Matrices, Vectors and Scalar. Entering a vector Colon operator ( : ) Mathematical operations on vectors.

Chapter 2: Basic Elements of C++

Chapter 2: Basic Elements of C++ Objectives. Objectives (cont d.) A C++ Program. Introduction

INTRODUCTION 1 AND REVIEW

Instruction Sets: Characteristics and Functions

CPSC 213. Introduction to Computer Systems. Static Scalars and Arrays. Unit 1b

CS201- Introduction to Programming Latest Solved Mcqs from Midterm Papers May 07,2011. MIDTERM EXAMINATION Spring 2010

Basic Processor Design

Machine and Assembly Language Principles

Computer Architecture

3. Instruction Set Architecture The MIPS architecture

First of all, it is a variable, just like other variables you studied

Arrays, Pointers and Memory Management

7.2 Similar Polygons. Geometry Mr. Peebles Spring 2013

Instruction Set Architecture

Xuan Guo. Lecture XIX: Subroutines (2) CSC 3210 Computer Organization and Programming Georgia State University. March 31, 2015.

EC 413 Computer Organization

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

Arrays and Pointers. Overview. Arrays Introducing Pointers C-Style Character Strings Multidimensioned Arrays

Objectives. In this chapter, you will:

Do not start the test until instructed to do so!

The MIPS Instruction Set Architecture

Similar Figures and Proportions

Branch Addressing. Jump Addressing. Target Addressing Example. The University of Adelaide, School of Computer Science 28 September 2015

MIPS (SPIM) Assembler Syntax

COS 140: Foundations of Computer Science

17. Instruction Sets: Characteristics and Functions

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

Since ESE GATE PSUs ELECTRICAL ENGINEERING COMPUTER FUNDAMENTALS. Volume - 1 : Study Material with Classroom Practice Questions

CSCE 5610: Computer Architecture

CSE 30 Fall 2012 Final Exam

C++ Programming: From Problem Analysis to Program Design, Third Edition

CS 31: Intro to Systems Binary Arithmetic. Martin Gagné Swarthmore College January 24, 2016

EDIABAS BEST/2 LANGUAGE DESCRIPTION. VERSION 6b. Electronic Diagnostic Basic System EDIABAS - BEST/2 LANGUAGE DESCRIPTION

Main Program. C Programming Notes. #include <stdio.h> main() { printf( Hello ); } Comments: /* comment */ //comment. Dr. Karne Towson University

Introduction to Digital Logic

CS 2461: Computer Architecture I

Type Checking. Prof. James L. Frankel Harvard University

A Fast Review of C Essentials Part I

[0569] p 0318 garbage

Instructions: Language of the Computer

Emulation. Michael Jantz

CS 31: Intro to Systems Arrays, Structs, Strings, and Pointers. Kevin Webb Swarthmore College March 1, 2016

Assembly Language. Prof. Dr. Antônio Augusto Fröhlich. Sep 2006

Basic Graph Algorithms (CLRS B.4-B.5, )

Course Administration

The Software Stack: From Assembly Language to Machine Code

2. ADDRESSING METHODS

Processor. Han Wang CS3410, Spring 2012 Computer Science Cornell University. See P&H Chapter , 4.1 4

MIPS Assembly Language Programming

Wednesday, February 7, 2018

Lecture 5: Instruction Set Architectures II. Take QUIZ 2 before 11:59pm today over Chapter 1 Quiz 1: 100% - 29; 80% - 25; 60% - 17; 40% - 3

Pointers, Dynamic Data, and Reference Types

Part 1 (70% of grade for homework 2): MIPS Programming: Simulating a simple computer

Basic Assembly SYSC-3006

symbolic name data type (perhaps with qualifier) allocated in data area, stack, or heap duration (lifetime or extent)

EC 413 Computer Organization

Lecture 20: AVR Programming, Continued. AVR Program Visible State (ones we care about for now)

ECE 154A Introduction to. Fall 2012

KOM3191 Object Oriented Programming Dr Muharrem Mercimek ARRAYS ~ VECTORS. KOM3191 Object-Oriented Computer Programming

CS2214 COMPUTER ARCHITECTURE & ORGANIZATION SPRING 2014

Transcription:

Chapter 5 Data Organization: The Load and Store Instructions Arthur B. Maccabe Department of Computer Science The University of New Mexico Copyright 1993 2000, Arthur B. Maccabe and McGraw-Hill, Inc. Assembler directives Overview the location counter; the symbol table, allocation, initialization and alignment; assembler segments; and constant expressions Slide 1 SPARC load and store instructions operand sizes; memory addresses; and encoding load and store instructions Data organization pointers; arrays; structures; and strings Addresses and integers Addressing modes on the HP-PA 1

Assembly Language Conventions Slide 2 Space any number of spaces or tabs; cannot appear in a number or identifier; optional, unless specifically required or prohibited; readability Comments! and everything following on the line. Identifier an underscore ( ) or a letter followed by any number of underscores, letters, and digits. Label definition an identifier followed by a colon ( : ). Instruction an operation name followed by a list of operands; there must be a space between the operation name and the operand list Operand list a comma-separated list of operands; number of operands depends on the operation. Line empty (i.e., white space); a label definition; an instruction; or a label definition followed by an instruction. Program a sequence of lines. Assembler Directives Overview Sometimes called pseudo-operations Slide 3 Like an instruction specified on a single line; optional label; name followed by parameters Convention: directive names start with. Translation, the location counter, and the symbol table Allocation, initialization, and alignment Assembler segments Constant expressions 2

The Translation Process Slide 4 Source code Translator Object code The Location Counter Starts at zero; is incremented (by instruction size) as each instruction is translated Slide 5 Logical address of the instruction Contrast to program counter translation time versus execution time location counter is strictly increasing, program counter can decrease (loops) 3

The Symbol Table Symbol table Source code Translator Object code Slide 6 Operations: insert and lookup Labels label address ; uses the location counter; forward references are OK Symbolic constants e.g.,.equiv const, 15; name value ; uses explicitly supplied value; no forward references; avoid the use of magic numbers Allocation and Initialization Sizes: Type Bytes Bits char 1 8 short int 2 16 int 4 32 long int 8 64 Slide 7 Allocation:.skip; e.g.,.skip 2 Initialization: name size.byte.hword.word 1 byte 2 bytes 4 bytes e.g.,.byte.xword a, b, c 8 bytes 4

Slide 8 short one:.hword 22 ch one:.byte a short two:.hword 33 ch two:.byte A int one:.word 0 Example short int short one = 22; char ch one = 'a'; short int short two = 33; char ch two = 'A'; int int one = 0; short_one: ch_one: short_two: ch_two: 22 a 33 A int_one: 0 a 1 a a+1 a+2 a+3 a+4 a+5 a+6 a+7 a+8 a+9 a+10 Alignment Slide 9.align 2 short one:.hword 22 ch one:.byte a.align 2 short two:.hword 33 ch two:.byte A.align 4 short_one: ch_one: short_two: 22 a 33 A ch_two: 0 int_one: a 2 a a+2 a+4 a+6 a+8 a+10 a+12 a+14 int one:.word 0 Assume a is divisible by 2, but not divisible by 4 5

Assembler Segments Symbol table Slide 10 Source code Translator Object code Text segment Data segment Explicit segment identification: e.g.,.seg data Slide 11 Object code file Header Code segment Data segment The bss Segment Loader Text Memory image segment Data segment bss segment 6

Let the assembler do the math! Constant Expressions Slide 12 Example.equiv CarSize, 14.skip 20 * CarSize Non relocatable expression SPARC Load and Store Instructions Overview Store instructions Big endian Slide 13 Load instructions Addressing modes register indirect register indirect with displacement register indirect with index Encoding 7

SPARC Store Instructions Slide 14 Mnemonic Operation Synonyms stb Store byte stub, stsb sth Store halfword stuh, stsh stw Store word st, stuw, stsw stx Store extended (double) word Slide 15 Byte:!!! a "# "# "# Halfword: a a+1 $ % $ % $ % &' &' &' Sizes Source register B 7 B6 B5 B4 B3 B2 B1 B0 Source register B 7 B6 B5 B4 B3 B2 B1 B0 8

Slide 16 Word: a a+1 a+2 a+3 () () () * + * + * + Sizes (continued) Source register B 7 B6 B5 B4 B3 B2 B1 B0 Slide 17 Extended word: a a+1 a+2 a+3 a+4 a+5 a+6 a+7,-,-,-,-,-,-././././././ Sizes (continued) Source register B 7 B6 B5 B4 B3 B2 B1 B0 9

SPARC Load Instructions Slide 18 Mnemonic Operation Synonyms ldsb Load signed byte ldsh Load signed halfword ldsw Load signed word ldub Load unsigned byte lduh Load unsigned halfword lduw Load unsigned word ld ldx Load extended (double) word Memory Addresses Address description Slide 19 Effective address calculation Three modes register indirect register indirect with displacement register indirect with index 10

4 4 4 4 Register Indirect Syntax: register in square brackets (e.g., [%r2) Slide 20 Graphical interpretation: Memory 0 01 01 01 01 0 01 01 01 01 2 23 23 23 23 2 23 23 23 23 Register Code example: lduw [%r4, %r5 inc %r5 stw %r5, [%r4 Using Symbolic Addresses Slide 21.seg data! switch to the data segment.align 2 x:.skip 2! allocate 2 bytes.seg text! switch to the text segment setx x, %r3, %r4! put the address of x into %r4 ldsh [%r4, %r5 inc %r5 sth %r5, [%r4 11

G GH H H ; < ; < ; < ; < ; < ; < ; < ; < Register Indirect with Displacement Slide 22 Syntax: register + small constant (e.g., [%r4 + 24) 9 9: 9: 9: 9: 9 9 Memory C CD CD A CD : AB 9: AB 9: AB 9: AB 9 9: 9: 9: 9: 7 78 78 78 78 7 78 78 78 7 Displacement 8 E EF EF 5 7? EF 56 78? @ = = 56 78? @ > = > 56 78? @ = > 56 78? @ = > 5 56 56 56 56 5 56 56 56 56 Graphical interpretation: Base register + Displacement Expanding the setx Slide 23 sethi %uhi(x), %r3! start of setx or %r3, %ulo(x), %r3 sllx %r3, 32, %r3 sethi %hi(x), %r4 or %r4, %r3, %r4 or %r4, %lo(x), %r4! end of setx ldsh [%r4, %r5 inc %r5 sth %r5, [%r4 12

[ [\ \ \ OP OP OP OP OP OP OP Using Displacement Addressing Slide 24 sethi %uhi(x), %r3 or %r3, %ulo(x), %r3 sllx %r3, 32, %r3 sethi %hi(x), %r4 or %r4, %r3, %r4 ldsh [%r4+%lo(x), %r5 inc %r5 sth %r5, [%r4+%lo(x) Register Indirect with Index Syntax: base register + index register (e.g., [%r4 + %r5) Slide 25 Graphical interpretation: M M Memory W WX WX U WX NUV MNUV MNUV MNUV M MN MN MN MN K KL KL KL KL K KL KL KL K Index register L Y YZ YZ I KS YZ IJ KLST Q QR IJ KLST QR IJ KLST QR IJ KLST QR I IJ IJ IJ IJ I IJ IJ IJ IJ + Base register Index register 13

Assuming 32-bit Addresses Slide 26 sethi %hi(x), %r4 ldsh [%r4+%lo(x), %r5 inc %r5 sth %r5, [%r4+%lo(x) Encoding Load and Store Instructions 31 30 29 25 24 19 18 14 13 12 5 4 0 11 rd op 3 rs 1 0 00000000 rs 2 11 rd op 3 rs 1 1 simm13 Slide 27 Field rd op 3 rs 1 rs 2 simm13 Meaning Destination register for load instructions, source register for store instructions Op code Base register Index register Displacement value in 13-bit 2 s complement representation 14

Opcodes Slide 28 Operation name op 3 Operation ldsb 00 1001 Load signed byte ldsh 00 1010 Load signed halfword ldsw 00 1000 Load signed word ldub 00 0001 Load unsigned byte lduh 00 0010 Load unsigned halfword lduw 00 0000 Load unsigned word ldx 00 1011 Load extended word stb 00 0101 Store byte sth 00 0110 Store halfword stw 00 0100 Store word stx 00 0111 Store extended word Example Encoding 1 SPARC instruction: ldsh [%r1+2, %r5 Format 31 30 29 25 24 19 18 14 13 12 0 11 rd op 3 rs 1 1 simm13 Slide 29 Field values Field Value Encoded value rd %r5 00101 op 3 ldsh 001010 rs 1 %r1 00001 simm 13 2 0000000000010 Encoding: 11 00101 001010 00001 1 0000000000010, or 0xCA506002 15

Example Encoding 2 SPARC instruction: ldsh [%r1+%r3, %r5 Format 31 30 29 25 24 19 18 14 13 12 5 4 0 11 rd op 3 rs 1 0 00000000 rs 2 Slide 30 Field values Field Value Encoded value rd %r5 00101 op 3 ldsh 001010 rs 1 %r1 00001 rs 2 %r3 00011 Encoding: 11 00101 001010 00001 0 00000000 00011, or 0xCA504003 Example Encoding 3 SPARC instruction: stw %r7, [%r1-12 Format 31 30 29 25 24 19 18 14 13 12 0 11 rd op 3 rs 1 1 simm13 Slide 31 Field values Field Value Encoded value rd %r7 00111 op 3 stw 000100 rs 1 %r1 00001 simm 13-12 1111111110100 Encoding: 11 00111 000100 00001 1 1111111110100, or 0xCE207FF4 16

Data Organization Overview Slide 32 How is data organized in memory? Pointers Arrays Structures Strings Pointers Slide 33 pointer to and address of (usually pointer to is associated with a type) Example char ch1, ^ ptr; ptr = &ch; ^ ptr = 'A'; Graphical interpretation ptr: ch1: A 17

fg fg fg fg fg fg Pointers in Assembly Language C code char ch1, _ ptr; SPARC code ptr = &ch1; Slide 34.seg data.align 8 ptr:.skip 8! an address is 64 bits ch1:.skip 1! a character is one byte..seg text set ch1, %r2! %r2 = &ch1 sethi %hi(ptr), %r3 stx %r2, [%r3+%lo(ptr)! store the value in ptr Slide 35 Graphical Interpretation de de Memory de de de de de de de de ptr: bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc `a `a `a `a `a `a `a `a `a `a ch1: 18

Pointer Dereferencing C code ^ ptr = 'a'; Slide 36 SPARC code sethi %hi(ptr), %r2 ldx [%r2+%lo(ptr), %r3! load the pointer value set a, %r4 stb %r4, [%r3! use register indirect addressing Array Layout and Indexing Slide 37 Basics Iterating through an array Nonzero-based arrays Multidimensional arrays 19

ˆ ˆ ˆ no no no tu tu tu z z{ z{ z{ z{ z{ z{ z{ Arrays: Layout Allocation C code: int int arr[24; SPARC directive:.reserve int arr, 24 ^ 4, bss! 4 bytes per integer Slide 38 Graphical interpretation jk{ jk Memory jk jk jk jk jk jk jk jk lm lm lm [0 lm lm vw vw vw [1 vw vw xy xy xy [2 xy xy int_arr: Array space pq pq pq hirs pq hirs hirs [23 hirs hirs hi hi hi hi hi 1 word 24 words Arrays: Indexing Scaled addition addr base } elem size ^ index Graphical interpretation Slide 39 ~ ~ Memory ~ ~ ~ ~ ~ ~ ~ ~ int_arr: Array space Š Š Š Š ƒ ƒ ƒ ƒ Œ Œ Œ Ž element Ž Ž Ž Base address Scaled index + * Element size Index value 20

Indexing Example 1 Slide 40 C code SPARC code int arr[5 = 47; set int arr+5^ 4, %r2! the indexed address calculation set 47, %r3! put the value 47 in a register stw %r3, [%r2! the store instruction Indexing Example 2 C code int arr[i = 47; Slide 41 SPARC code set int arr, %r2! put base address in a register sethi %hi(i), %r3 ldsw [%r3+%lo(i), %r3! load the value of i sll %r3, 2, %r3! scale the index set 47, %r4! put the value 47 in a register stw %r4, [%r2+%r3! store the value 21

Sum Array Elements Slide 42 int arr[20; int sum, i; sum = 0; for( i = 0 ; i 20 ; i++ ) sum = sum + arr[i; Using Simple Control Transfers int arr[20; int sum, i; Slide 43 sum = 0; i = 0; top: sum = sum + arr[i; i = i + 1; if( i 20 ) goto top 22

SPARC code.reserve arr, 20*4, bss.seg data sum:.skip 4 Slide 44.seg text clr %r2! sum = 0; clr %r3! i = 0; set arr, %r4! %r4 holds the base address SPARC code (continued) Slide 45 top: ldsw [%r4+%r3, %r5! arr[i add %r5, %r2, %r2! sum = sum + arr[i; inc 4, %r3! i = i + 1; cmp %r3, 80! i 20 bl top nop sethi %hi(sum), %r5 stw %r2, [%r5+%lo(sum) 23

Basic indexing expression Nonzero Arrays addr base } elem size ^ index lower Slide 46 Gathering constants addr base elem size ^ lower } elem size ^ index Savings: went from: subtract, multiply, add to: multiply, add Context Example: Allocation and Definitions Slide 47 an array of integers upper bound 34 lower bound 15 SPARC code.seg data.align 4 i:.skip 4.reserve real base, (34-15+1) ^ 4, bss! 4 bytes per integer.equiv img base, real base 15^ 4 24

žÿ žÿ žÿ žÿ žÿ žÿ žÿ žÿ žÿ žÿ žÿ žÿ žÿ Example: Indexing Slide 48 Set element with index i to 432 SPARC code.seg text set img base, %r2! put base address in a register sethi %hi(i), %r3 ldsw [%r3+%lo(i), %r3! load the value of i sll %r3, 2, %r3! scale the index set 432, %r4 stw %r4, [%r2+%r3! store the value Slide 49 Graphical Interpretation img_base: real_base: Allocated space œ œ Memory œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ œ [0 [1 [2 š š š [19 š š š š š š š Imaginary [0 [1 [2 [14 [15 [16 [17 [34 15*4 25

Multidimensional Arrays Slide 50 Array of arrays C declaration: int two arr[5[3; Row major layout (FORTRAN uses column major layout) Slide 51 Graphical Interpretation [0[0 [0[1 [0[2 [1[0 [1[1 [1[2 row 0 row 1 ª ª «ª «[4[0 [4[1 [4[2 row 4 26

Example: Declarations C code int i, j; int two arr[5[3; SPARC code Slide 52.seg data.align 4 i:.skip 4 j:.skip 4.reserve two arr, (5± 3)± 4, bss! 5 arrays of 3 elements! of 4 bytes Example: Access C code two arr[i[j = 47; SPARC code Slide 53.seg text set two arr, %r2! %r2 holds the array base address sethi %hi(i), %r3 ldsw [%r3+%lo(i), %r3! load i mulx %r3, 3± 4, %r3! scale by the size of a row add %r2, %r3, %r2! %r2 holds the row base address sethi %hi(j), %r3 ldsw [%r3+%lo(j), %r3! load j sll %r3, 2, %r3! scale by the element size set 47, %r4! the base address stw %r4, [%r2+%r3 27

Structures Slide 54 C declarations Template struct person ² /³ declare a structure ³ / char name[14; int salary, age; ; 0: 4: 8: salary age name 24: µ µ µ Padding introduced to support tiling (following one after the other with no alignment problems) SPARC Template Slide 55! defines for the structure person.equiv SALARY, 0! the salary member starts at offset 0.equiv AGE, 4! the age member starts at offset 4.equiv NAME, 8! the name member starts at offset 8.equiv P SIZE, 24! each structure is 24 bytes 28

Access: Using. C code SPARC code struct person joe; /³ joe is a structure variable ³ / joe.age = 25; /³ joe is 25 ³ / Slide 56.seg data.align 4 joe:.skip P SIZE! joe is a structure.seg text set 25, %r2 sethi %hi(joe+age), %r3 stw %r2, [%r3+%lo(joe+age)! joe.age = 25 Access: Using C code struct person ³ sam; /³ sam is a pointer to a structure ³ / Slide 57 SPARC code sam age = 32; /³ sam is 32 ³ /.seg data.align 8 sam:.skip 8! sam is a pointer.seg text set 32, %r2 sethi %hi(sam), %r3 ldx [%r3+%lo(sam), %r4! %r4 points to the structure stw %r2, [%r4+age! sam¹ age = 32 29

Strings Slide 58 Directives:.ascii and.asciz Representations Length plus value NULL terminated An Example Length Plus Value Slide 59 Length in first byte Value in remaining bytes Example my str:.byte last ch first ch! just the length first ch:.ascii Hello, world. last ch:! marking the end Size of length establishes maximum string length 30

NULL Terminated Slide 60 Value followed by terminating character Example my str:.asciz Hello, world. Inefficiency of string length and concatenation Calculating String Length Slide 61 char str[128; int len; len = 0; while( str[len º 0 ) len = len + 1; 31

Simple Control Transfers len = 0; goto test; Slide 62 top: len = len + 1; test: if( str[len º 0 ) goto top; SPARC Code Slide 63.seg data.align 8.reserve str, 128, bss len:.skip 4 32

SPARC Code (continued).seg text clr %r2! len = 0; set str, %r3 ba %xcc, test! goto test nop Slide 64 top: test: inc %r2! len = len + 1; ldub [%r3+%r2, %r4! load str[len brnz %r4, top! if( str[len!= 0 ) goto top nop sethi %hi(len), %r4 stw %r2, [%r4+%lo(len)! store len Addresses and Integers Slide 65 Add an integer to an address Subtract and integer from an address Subtract two addresses 33

Addressing Modes on the HP PA Displacement Slide 66 pre and post modification Indexed post modification scaling Displacement Addressing on the HP PA Base register not modified Base Register Address + Displacement Base register modified, post-displacement Slide 67 Address + Base Register Displacement Base register modified, pre-displacement Base Register Address + Displacement 34

Simple indexing Indexed Addressing on the HP PA Base Register Slide 68 Address + Index Register Base register modification Address Base Register + Index Register Indexed Addressing on the HP PA (continued) Indexing with scaling Base Register Index Register Slide 69 Address + * Scale Base register modification with scaling Address Base Register + * Index Register Scale 35