• No se han encontrado resultados

Estructura y Tecnología de Computadores. Módulo C. Arquitectura del procesador. Tema 4. Modos de direccionamiento y tipos de datos

N/A
N/A
Protected

Academic year: 2021

Share "Estructura y Tecnología de Computadores. Módulo C. Arquitectura del procesador. Tema 4. Modos de direccionamiento y tipos de datos"

Copied!
13
0
0

Texto completo

(1)

Estructura y Tecnología de Computadores

Estructura y Tecnología de Computadores

Módulo C.

Arquitectura del procesador

Tema 4. Modos de direccionamiento y tipos de datos

Tema 4. Modos de direccionamiento y tipos de datos

José Manuel Mendías Cuadros

José Manuel Mendías Cuadros

Dpto

Dpto. Arquitectura de Computadores y Automática. Arquitectura de Computadores y Automática Universidad Complutense de Madrid

Universidad Complutense de Madrid

2

estructura y tecnología de

computadores

1. Organización de la información en memoria

Organización de la memoria. Alineamiento. Ordenamiento

2. Tipos de datos

Contenidos de la memoria. Caracterización de los tipos de datos. Representación de datos numéricos: enteros, reales y decimales. Representación de caracteres. Representación de información lógica o booleana.

3. Registros y pila de la arquitectura

Registros principales. Códigos de condición. Pila del sistema

4. Modos de direccionamiento

Definición. Modos de direccionamiento simples. Modos de direccionamiento complejos

5. Aplicaciones de los modos de direccionamiento

Acceso a variables atómicas. Acceso a elementos de un array. Primitivas de pila

NOTA: al final del tema 3, se estudiarán algunos ejemplos de los modos de direccionamiento utilizados en procesadores comerciales

contenidos

(2)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

introducción

introducción

Ö

El funcionamiento de un computador está determinado por las instrucciones que

ejecuta.

Ö

El área que estudia las características de ese conjunto de instrucciones se

denomina

arquitectura del procesador

o

arquitectura del repertorio de

instrucciones

y engloba los siguientes aspectos:

Ø Formato de los datos

ðTipos de datos que puede manipular el computador a nivel de lenguaje máquina

Ø Registros de la arquitectura

ðConjunto de registros visibles al programador (de datos, direcciones, estado, PC)

Ø Modos de direccionamiento

ðForma de especificar la ubicación de los datos y modos para acceder a ellos

Ø Repertorio de instrucciones

ðOperaciones que se pueden realizar y sobre qué tipos de datos actúan

Ø Formato de instrucción

ðDescripción de las diferentes configuraciones de bits que adoptan las instrucciones máquina

4

estructura y tecnología de

computadores

Ö

Los datos e instrucciones que manipula un programa se almacenan en la memoria

Ø Temporalmente se pueden almacenar datos en los registros de la CPU para su manipulación: el acceso a un registro es mucho más rápido que el acceso a memoria

Ø Eventualmente pueden solicitarse datos a los dispositivos de E/S

Ö

Organización de la memoria en palabras

Ø La memoria se organiza en grupos de n bits llamados palabras de memoria

ðEl ancho de palabra suele coincidir con el número de bits utilizados para representar números. Los computadores actuales utilizan anchos de palabra entre 16 y 64 bits

Ø Cada palabra de memoria tiene asignado un identificador llamado dirección de memoria

ðEl rango de direcciones de memoria es un número entre 0 y 2k-1

ðEsas 2k direcciones distintas constituyen el espacio de direcciones del computador ðPara especificar una dirección dentro de ese rango se necesitan k bits de dirección

Organización de la memoria (*)

Organización de la memoria (*)

Ö

Computador de 32 bits con 16 Mbytes de memoria

Ø Ancho de palabra: 32 bits (4 bytes)

Ø Nº de palabras en memoria: 4 M palabras (222) Ø Espacio de direcciones: 222 palabras Ø Nº de bits de dirección necesarios: 22

EJEMPLO

EJEMPLO

(*) Desde el punto de vista del programador

n bits Dirección 0 1 i 2k-1 Palabra 0 Palabra 1 Palabra i Palabra 2k-1 w w w w w w w w w w w w w w w w w w MEMORIA

1. organización de la información en memoria

(3)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Ö Sin embargo, es posible que la arquitectura permita una mayor resolución en la información que es individualmente direccionable:

Ø Se llama unidad direccionable, a la mínima cantidad de información que tiene una dirección única

Ø Es común que en un computador de ancho de palabra 16, 32 ó 64 bits, el tamaño de la unidad direccionable sea de 1 byte (8 bits)

Ö Cuando el ancho de palabra y tamaño de la unidad direccionable no coinciden aparecen 2 problemas:

Ø Alineamiento: cómo relacionar las direcciones de las palabras con las direcciones de las unidades direccionables

Ø Ordenamiento: cómo repartir el contenido de una palabra en un conjunto consecutivo de unidades direccionables

palabras alineadas

palabras no alineadas Dirección del byte Dirección del byte

Ö Palabras no alineadas: permitir que una palabra tenga cualquier dirección

Ø El interfaz de memoria debe secuenciar los accesos (ya que podrán requerirse varios para obtener la información)

Ö Palabras alineadas: limitar las direcciones de palabra según su tamaño

Ø Los bytes en cualquier dirección, las palabras de 16 bits en direcciones pares, las de 32 bits en direcciones múltiplos de 4... Ø Se desperdicia memoria

Alternativas de alineamiento

Alternativas de alineamiento

0 1 2 3 4 5 6 7 2k-4 2k-3 2k-2 2k-1 8 9 10 11 12 13 14 15

...

0 1 2 3 4 5 6 7 2k-4 2k-3 2k-2 2k-1 8 9 10 11 12 13 14 15

...

1. organización de la información en memoria

1. organización de la información en memoria

6

estructura y tecnología de

computadores

Ö Big-Endian: los bytes se numeran comenzando por el menos significativo, una palabra tiene la misma dirección que su byte más significativo

Ö Little-Endian: los bytes se numeran comenzando por el más significativo, una palabra tiene la misma dirección que su byte menos significativo

Alternativas de ordenamiento

Alternativas de ordenamiento

Ö Queremos almacenar en la dirección 184, el número 12.345.678 codificado en BCD:

Ø 1 dígito BCD ocupa 4 bits

Ø 2 dígitos BCD por byte: 12-34-56-78

Ø la memoria es direccionable por bytes

Ö Big-Endian: Ö Little-Endian: Palabra 0 Palabra 2k-4 w w w Palabra 4 w w w

Dirección del byte

0 1 2 3 4 5 6 7 2k-4 2k-3 2k-2 2k-1

Big-Endian

Palabra 0 Palabra 2k-4 w w w Palabra 4 w w w

Dirección del byte

3 2 1 0 7 6 5 4 2k-1 2k-2 2k-3 2k-4

Little-Endian

12 34 56 78 184 185 186 187 78 56 34 12 184 185 186 187 12 34 56 78 187 186 185 184 Ö Big-endian Ø orden coherente

Ø facilita la ordenación y el volcada

Ö Little-endian

Ø facilita la aritmética

Ø facilita las conversiones de tamaño

1. organización de la información en memoria

(4)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

En una palabra de memoria de 32 bits se puede codificar

a) Un número entero entre -(231-1) y +(231-1)

codificado mediante magnitud y signo

b) 32 dígitos Booleanos o lógicos

c) Cuatro caracteres ASCII

d) Una instrucción máquina

Ö

El contenido de una palabra de memoria es una

colección de 0’s y 1’s

Ø Es el computador el encargado de interpretar lo que representa en cada momento

Ö

Depende de cómo se interprete esa palabra,

ésta puede representar:

Ø Datos

ðNuméricos

ü Enteros (Magnitud y signo, C’1, C’2, ...)

ü Reales (Punto fijo, Punto flotante, ...)

ü Decimales (BCD, Exceso-3, ...)

ðBooleanos o lógicos

ü TRUE, FALSE

ðCaracteres

ü Letras, dígitos decimales, signos puntuación

ü Representación más común: ASCII

Ø Instrucciones

ðCódigo de operación + Información de direccionamiento

Contenidos de la memoria

Contenidos de la memoria

EJEMPLO

EJEMPLO

b30

b31

. . .

b1 b0 Bit de signob31 = 0 para nos positivos

b31 = 1 para nos negativos Magnitud = b30x230 + ··· + b1x21 + b0x20

8 bits 8 bits 8 bits 8 bits Carácter ASCII Carácter ASCII Carácter ASCII Carácter ASCII 8 bits 24 bits Código de Operación Información de Direccionamiento b30 b31 b1 b0 bk = 0 ⇒ FALSE bk = 1 ⇒ TRUE 0 ≤ k ≤ 31

. . .

2. tipos de datos

2. tipos de datos

8

estructura y tecnología de

computadores

Ö

Un tipo de datos es una sucesión de bits caracterizada por dos propiedades:

Ø Su dominio, que es el conjunto de valores que el dato puede tomar y depende de:

ðEl tipo de representación

ðEl tamaño o número de bits utilizado para la representación

Ø Las operaciones que pueden realizarse sobre ese dato

Ö

Se dice que una arquitectura soporta un determinado tipo de datos si

Ø Tiene asignada al menos una representación de ese tipo de datos

Ø Dispone de un conjunto de operaciones para manipular esa representación

Caracterización de los tipos de datos

Caracterización de los tipos de datos

Tipos de datos

Numéricos

Lógicos Caracteres

Enteros Reales Decimales

Representaciones: • Magnitud y signo • C’1 • C’2 • ... Representaciones: • Punto fijo • Punto flotante • ... Representaciones: • BDC • Exceso-3 • ... Representaciones: • Compacto • No compacto Representaciones: • ASCII • EBCDIC • ...

Limita el rango y la precisión

2. tipos de datos

(5)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Representación de datos numéricos enteros

Representación de datos numéricos enteros

Ö

Magnitud y signo (MS)

Ø Simétrico

Ø Dos representaciones para el cero:

ð+ 0 → 000...00

ð - 0 → 100...00

Ø Rango (tamaño = n bits)

ð-(2n-1-1) x +(2n-1-1)

Ö

Complemento a 1 (C’1)

Ø Simétrico

Ø Dos representaciones para el cero:

ð+ 0 → 000...00

ð - 0 → 111...11

Ø Rango (tamaño = n bits)

ð-(2n-1-1) x +(2n-1-1)

Ö

Ö

Complemento a 2 (C’2)

Complemento a 2 (C’2)

Ø No simétrico

Ø Una única representaciones para el cero

Ø Rango (tamaño = n bits)

ð-(2n-1) x +(2n-1-1) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

MS

0 1 2 3 4 5 6 7 -0 -1 -2 -3 -4 -5 -6 -7 0 1 2 3 4 5 6 7 -7 -6 -5 -4 -3 -2 -1 -0

C’1

0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1

C’2

b3 b2 b1 b0 POSITIVOS NEGATIVOS

Ejemplo (tamaño = 4 bits)

Ejemplo (tamaño = 4 bits)

Uso: cálculos exactos, variables de control, índices

2. tipos de datos

2. tipos de datos

10

estructura y tecnología de

computadores

Representación de datos numéricos reales

Representación de datos numéricos reales

Ö

Punto fijo

Ø Un nº fijo de bits representa la parte entera y otro la decimal

Ø El punto decimal se coloca entre ambas partes en un lugar fijo

Ø El rango representable es muy limitado

Ø Puede utilizar aritmética entera

Ö

Punto flotante

Ø Un número N se representan mediante un signo, una mantisa (M) y un exponente (E)

ðN = ± M * BE

Ø La base es implícita y es común para todos los números

ðNo necesita almacenarse (normalmente B = 2)

Ø Existen multitud de asignaciones posibles de bits a la mantisa y al exponente

Ø Requiere de una aritmética propia

N = ± (b30*220 + b29*219 + .... + b10*20 + b9*2-1 + ....+ b0*2-10 ) Parte entera (21 bits) Parte decimal (10 bits) Signo (1 bit) b31 b30 ··· b10 b9 ··· b0

Punto

Fijo:

N = ± 1,M * 2E Siendo E = (b30*27 + ....+ b23*20 ) Exponente (8 bits) Mantisa (23 bits) Signo (1 bit) b31 b30 ···b23 b22 ··· b0

Punto

Flotante:

2. tipos de datos

2. tipos de datos

(6)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Representación de datos numéricos decimales

Representación de datos numéricos decimales

Ö

Cada dígito decimal se codifica mediante un grupo de 4 bits

Ø BCD: los dígitos decimales se codifican mediante su equivalente binario

Ø Exceso-3: los dígitos decimales se codifican sumando 3 a su equivalente binario

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

BCD

0 1 2 3 4 5 6 7 8 9

Exc.-3

Decimal 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

Ö

Decimal empaquetado

Ø 2 dígitos decimales por byte

Ö

Decimal no empaquetado

Ø 1 dígito decimal por byte

Dig. 1º Dig. 2º Dig. 3º Dig. 4º Dig. 5º Dig. 6º

Byte 1 Byte 2 Byte 3

X Dig. 1º X Dig. 2º X Dig. 3º

Byte 1 Byte 2 Byte 3

Empaquetamiento

Empaquetamiento

Uso: Evitar el coste de conversión de base y evitar los problemas de redondeo que aparecen (por ejemplo: 0.3(10) = 0.0100110011001...(2)).

2. tipos de datos

2. tipos de datos

12

estructura y tecnología de

computadores

Representación de caracteres

Representación de caracteres

Ö

Los caracteres son necesarios para representación de la información escrita

Ø Letras del alfabeto (a, b, ..., z, A, B, ..., Z, á, é, ..., ü, ...)

Ø Signos de puntuación (, ; : . ¿? ¡! -)

Ø Caracteres numéricos (0, 1, ..., 9)

Ö

Existen diversas alternativas de codificación (7 u 8 bits por carácter)

Ø ASCII

Ø EBCDIC

Representación de información lógica o booleana

Representación de información lógica o booleana

Ö

Para representar información lógica se necesita un único bit

Ø TRUE = 1

Ø FALSE = 0

Ö

Representación

compacta

Ø 8 dígitos booleanos por byte

Ø Necesidad instrucciones complejas para acceder al dato booleano

Ö

Representación

no compacta

Ø 1 dígito booleano por byte

Ø Instrucciones de acceso sencillas pero se desperdician 7 bits

2. tipos de datos

(7)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Los principales registros son

Los principales registros son

Ö

Contador de programa

(PC, “Program Counter”)

Ø Almacena la dirección de la siguiente instrucción a ejecutar

Ø Cada vez que se accede a una instrucción se le suma una cantidad igual a la longitud de la misma

Ö

Registro de estado

(SR, “Status Register”)

Ø Almacena códigos o bits de condición (Z, N, C, V, etc.)

ðSon un conjunto de bits que se activan tras la ejecución de ciertas operaciones, en función del resultado de las mismas

ðSe suelen utilizar en instrucciones de salto condicional, para saltar a una determinada dirección en función del resultado de una instrucción anterior

Ø También almacena otra información de estado (máscara interrupciones, bit de traza, etc.)

Ö

Puntero de pila

(SP, “Stack Pointer”)

Ø Almacena la dirección de la cabecera de la pila del sistema

Ö

Registros de datos o de propósito general

(Di ó Ri)

Ø Se utilizan para almacenar datos del programa temporalmente

Ø También pueden usarse para direccionamiento y manipulación de direcciones

Ö

Registros de direcciones

(Ai)

Ø Se utilizan para para direccionamiento y manipulación de direcciones

Ø No siempre se distinguen de los registros de datos

3. registros y pila de la arquitectura

3. registros y pila de la arquitectura

14

estructura y tecnología de

computadores

Códigos de condición del registro de estado

Códigos de condición del registro de estado

Bits de estado Significado

Z (cero) Se activa siempre que el resultado una operación es cero (cero)

N (negativo) Se activa siempre que el resultado una operación es negativo

C (acarreo) Se activa siempre que el resultado una operación produce acarreo (carry)

V (desbordamiento) Se activa siempre que el resultado una operación produce desbordamiento (overflow)

Pila del sistema

Pila del sistema

Ö

Es una zona de memoria para almacenar datos y/o instrucciones de forma temporal

Ö

El acceso a la pila es restringido

Ø Sólo se añadir o eliminar un elemento al final de la pila, llamado cabecera de la pila

ðFunciona igual que una pila de objetos (p. ej. platos) en la que sólo se puede añadir o eliminar un objeto del final pero no de la mitad.

Ø También se llama memoria LIFO (Last-In-First-Out, o último que entra primero que sale)

Ø El puntero de pila es un registro que siempre apunta a la cabecera de la pila

Ø Se llaman base de la pila y límite de la pila a las direcciones tope por ambos lados de la pila

Ö

Las operaciones básicas sobre una pila son:

Ø PUSH: para poner un nuevo elemento en la cabecera de la pila

Ø POP: para eliminar un elemento de la cabecera de la pila

3. registros y pila de la arquitectura

(8)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Ejemplo de funcionamiento de la pila

Ejemplo de funcionamiento de la pila

Ö

Por lo general la pila siempre crece en orden decreciente de direcciones de memoria

Ö

La operaciones PUSH y POP pueden formar parte del repertorio de instrucciones, o bien

pueden implementarse mediante dos instrucciones más simples:

PUSH new_item ⇔⇔ DECREMENT SPMOVE new_item, (SP) POP item ⇔⇔ MOVE (SP), itemINCREMENT SP

91 4 • • • • • • • • • 320 MEMORIA PILA 0 2k-1 SP (Puntero de pila) 91 4 • • • • • • • • 320 MEMORIA PILA 0 2k-1 SP 123 123 new_item 4 • • • • • • • • • • 320 MEMORIA PILA 0 2k-1 SP 91 item

Operación

PUSH

Operación

POP (*)

(*) POP a partir de la situación inicial

Situación

inicial

3. registros y pila de la arquitectura

3. registros y pila de la arquitectura

16

estructura y tecnología de

computadores

Ö

Forma de especificar la ubicación de los datos y modos para acceder a ellos

Ö

Los datos que maneja una instrucción máquina pueden estar ubicados en:

Ø En la propia instrucción

ðEl operando está contenido en un campo de la propia instrucción máquina

Ø En un registro de la CPU

ðLos registros de la CPU se pueden utilizar para almacenar temporalmente los datos

Ø En la memoria del computador

ðEn este caso será necesario especificar de algún modo la dirección de memoria dónde se halla el operando: dirección efectiva (EA, “Effective Address”) del operando

Definición

Definición

Ö Inmediato

Ö Directo a registro

Ö Directo a memoria (absoluto)

Ö Indirecto con registro

Ö Indirecto con pila

Ö Indirecto con memoria

Ö Indirecto con desplazamiento

Modos de direccionamiento simples

Modos de direccionamiento simples

Ri Registro nº i de la CPU

(Ri) Contenido del registro Ri

(X) Contenido de la posición de memoria con dirección X

EADirección efectiva de un operando

SP Puntero de pila (Stack Pointer)

Notación usada

Notación usada

4. modos de direccionamiento

(9)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Ö

El operando está contenido en un campo

de la propia instrucción máquina

Ö

Sintaxis:

opcode #A

Inmediato

Inmediato

opcode A operando = A Instrucción:

Ö

El operando está contenido en un registro

de la CPU

Ö

Sintaxis

:

opcode Ri

Directo a registro

Directo a registro

Ö

La dirección efectiva del operando está

especificada en la instrucción

Ö

Sintaxis

:

opcode A

Directo a memoria (absoluto)

Directo a memoria (absoluto)

opcode Ri Instrucción: Registros R0 • • Rn Ri • • • operando • • • • • operando = (Ri) opcode A EA = A Instrucción: Memoria 2k-1 operando 0 • • • • • •

4. modos de direccionamiento

4. modos de direccionamiento

18

estructura y tecnología de

computadores

Ö

La dirección efectiva del operando está

almacenada en la dirección de memoria

especificada en la instrucción

Ö

Sintaxis:

opcode (A)

Indirecto con memoria

Indirecto con memoria

opcode A EA = (A) Instrucción: Memoria 2k-1 direc. operando 0 •• •• operando • •

4. modos de direccionamiento

4. modos de direccionamiento

Ö

La dirección efectiva del operando está

almacenada en el registro especificado en

la instrucción

Ö

Sintaxis

:

opcode (Ri)

Indirecto con registro

Indirecto con registro

opcode Ri Instrucción: Registros R0 • • Rn Ri • • • Direc. operando • • • • • EA = (Ri) Memoria 2k-1 operando 0 • • • • • •

Ö

El operando está almacenado en la

cabecera de la pila del computador

(apuntada por SP)

Ö

Sintaxis

:

opcode (SP)

Indirecto con pila

Indirecto con pila

opcode Instrucción: Pila SP operando • • • EA = (SP)

(10)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Ö

Son un conjunto de direccionamientos en los que la EA del operando se calcula sumando

dos cantidades:

base

(dirección efectiva de memoria) y

desplazamiento

.

Ø El lugar donde se ubiquen dichos elementos determina el nombre del direccionamiento

Indirectos con desplazamiento

Indirectos con desplazamiento

Ö

La dirección efectiva del operando se

calcula sumando el campo

desplaza-miento al contenido del registro

especificado

Ö

Sintaxis

:

opcode desp(Ri)

registro-base

registro-base

opcode Ri Instrucción: Registros R0 • • Rn Ri • • • • • • • • EA = (Ri)+desp Memoria 2k-1 operando 0 • • • • • • desp. +

Ö

Es un direccionamiento registro-base que

utiliza implícitamente el contador de

programa

Ö

Sintaxis

:

opcode desp(PC)

relativo

relativo

opcode Instrucción: PC EA = (PC)+desp Memoria 2k-1 operando 0 • • • • • • desp. +

4. modos de direccionamiento

4. modos de direccionamiento

20

estructura y tecnología de

computadores

Ö

La dirección efectiva del operando se

calcula sumando el campo

desplaza-miento al contenido del registro

especificado

Ö

Sintaxis

:

opcode desp(Ri)

indexado

indexado

opcode Ri Instrucción: Registros R0 • • Rn Ri • • • • • • • • EA = A +(Ri) Memoria 2k-1 operando 0 • • • • • • A + desp.

Ö

La dirección efectiva del operando se

calcula sumando el campo

desplaza-miento al contenido del registro

especificado

Ö

Sintaxis

:

opcode (Ri, Rj)

registro-base indexado

registro-base indexado

opcode Ri

Instrucción: Registros R0 • Rn Rj Ri • • • EA = (Ri) +(Rj) Rj + Memoria 2k-1 operando 0 • • • • • •

4. modos de direccionamiento

4. modos de direccionamiento

(11)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

Modo Dir. Efectiva Ventajas Desventajas

Inmediato Operando = A No accede a memoria Operando de magnitud

limitada

Directo a memoria EA = A Sencillo Espacio direcciones limitado

Directo a registro Operando = (Ri) No accede a memoria Nº limitado de registros

Indirecto con mem. EA = (A) Espacio direcciones

grande Dos accesos a memoria

Indirecto con reg. EA = (Ri) Espacio direcciones

grande Acceso a reg. y a memoria

Indirecto con desp. EA = base+desp Versátil Complejo. Accesos a reg y amemoria

Indirecto con pila EA = (SP) "No accede amemoria" No siempre disponible

Comparación de los modos de direccionamiento simples

Comparación de los modos de direccionamiento simples

4. modos de direccionamiento

4. modos de direccionamiento

22

estructura y tecnología de

computadores

Modo Sintáxis Dir. Efectiva

Indirecto con registro postincrementado

Opcode (Ri)+ EA = (Ri)

Ri = Ri + 1 Indirecto con registro

postdecrementado

Opcode (Ri)- EA = (Ri)

Ri = Ri –1 Indirecto con registro

preincrementado

Opcode +(Ri) Ri = Ri + 1

EA = (Ri) Indirecto con registro

predecrementado

Opcode -(Ri) Ri = Ri – 1

EA = (Ri) Registro-base indexado con

desplazamiento

Opcode desp(Ri,Rj) EA = (Ri)+(Rj)+desp

Indirecto con registro escalado

Opcode (Ri×S) EA = (Ri)×S

Registro-base escalado Opcode desp(Ri×S) EA = (Ri)×S+desp Registro-base indexado y

escalado con despl.

Opcode desp(Rj,Ri×S) EA = (Rj)+(Ri)×S+desp

Modos de direccionamiento complejos

Modos de direccionamiento complejos

Ö

Se utilizan fundamentalmente para acceso a estructuras de datos complejas

(vectores, arrays, tablas, registros, etc.)

4. modos de direccionamiento

(12)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

5. aplicaciones de los modos de direccionamiento

5. aplicaciones de los modos de direccionamiento

MEMORIA base de la pila puntero de marco global marco global marco de 1ª activación de A marco de 2ª activación de A marco de activación de C puntero de marco local 0 2k-1 SP Ö En C existen 2 tipos de variables:

Ø globales: accesibles por cualquier función y asignadas estáticamente a memoria al arrancar el programa

Ø locales: accesibles por una única función y asignadas dinámicamente a memoria cada vez que se llama a la función

Ö Los compiladores de C crean código de tal manera que cada vez que una función es llamada, se reserva en la pila del sistema una zona para las variables locales de la función. Dicha zona se llama marco de activación

Ö Supóngase el siguiente programa:

main

A

B

C

Foto de la pila del sistema durante una ejecución que realiza la secuencia de llamadas:

main A A C

24

estructura y tecnología de

computadores

5. aplicaciones de los modos de direccionamiento

5. aplicaciones de los modos de direccionamiento

Ö ¿qué conocemos?

Ø El tamaño y distribución de las variables dentro de los marcos: ya que dependen de las declaraciones que haya hecho el programador

Ø La dirección dinámica de los punteros a marcos (que varía de una ejecución a otra)

Ö ¿cómo calcular las direcciones de las variables?

Ø globales: (puntero de marco global) + desplazamiento

Ø locales: (puntero de marco local) + desplazamiento

Acceso a variables atómicas

Acceso a variables atómicas

Debe utilizarse el direccionamiento registro-base, en donde el registro base deberá contener la dirección de comienzo del marco (actuando como puntero de marco).

puntero de marco

V

desp.

(13)

estructura y tecnología de

estructura y tecnología de

computadores

computadores

5. aplicaciones de los modos de direccionamiento

5. aplicaciones de los modos de direccionamiento

Ö ¿qué suponemos?

Ø El primer índice del array es 0

Ø Los elementos del array tiene tamaño n bytes

Ö ¿ qué conocemos?

Ø El array comienza en la dirección: (puntero de marco) + desplazamiento

Ö ¿cómo calcular la dirección del elemento i?

Ø (puntero de marco) + desplazamiento + i × n

Acceso a elementos de un array

Acceso a elementos de un array

MEMORIA comienzo del array A[0] A[1] A[i] puntero de marco local 0 2k-1 i ×× n desp.

Debe utilizarse el direccionamiento registro-base indexado y escalado con desplazamiento, en donde el

registro base deberá contener la dirección de comienzo del marco, el registro índice el índice del elemento que se desea acceder y el factor de escala ser igual a n

26

estructura y tecnología de

computadores

5. aplicaciones de los modos de

5. aplicaciones de los modos de

direccionamiento

direccionamiento

Primitivas de pila

Primitivas de pila

Ö

Las operaciones básicas sobre una pila (PUSH y POP) pueden realizarse utilizando

los modos de direccionamiento autoindexados:

Ø Si la pila crece en orden decreciente de direcciones de memoria

ðla operación PUSH se realiza utilizando direccionamiento indirecto con registro predecrementado

ðla operación POP se realiza utilizando direccionamiento indirecto con registro postincrementado

Ø Si la pila crece en orden creciente de direcciones de memoria

ðla operación PUSH se realiza utilizando direccionamiento indirecto con registro preincrementado

ðla operación POP se realiza utilizando direccionamiento indirecto con registro postdecrementado

Referencias

Documento similar