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
DptoDpto. 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
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
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 wDirecció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
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 positivosb31 = 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
8estructura 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
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 -0C’1
0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1C’2
b3 b2 b1 b0 POSITIVOS NEGATIVOSEjemplo (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 ··· b0Punto
Flotante:
2. tipos de datos
2. tipos de datos
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 9Exc.-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
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
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
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
18estructura 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)
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
20estructura 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 RiInstrucción: Registros R0 • Rn Rj Ri • • • EA = (Ri) +(Rj) Rj + Memoria 2k-1 operando 0 • • • • • •
4. modos de direccionamiento
4. modos de direccionamiento
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
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.
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