Modos de direccionamiento y tipos de datos

Anuncio
1
Estructura y Tecnología de Computadores
Módulo C. Arquitectura del procesador
Tema 4. Modos de direccionamiento y tipos de datos
José Manuel Mendías Cuadros
Dpto.
Dpto. Arquitectura de Computadores y Automática
Universidad Complutense de Madrid
2
contenidos
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
estructura y tecnología de computadores
3
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
estructura y tecnología de computadores
4
1. organización de la información en memoria
Organización de la memoria (*)
Ö 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
MEMORIA
EJEMPLO
0
1
Ø
Ø
Ø
Ø
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
Dirección
Ö Computador de 32 bits con 16 Mbytes de memoria
w
w
w
Palabra 0
Palabra 1
w
w
w
i
w
w
w
2k-1
Palabra i
w
w
w
(*) Desde el punto de vista del programador
estructura y tecnología de computadores
w
w
w
n bits
w
w
w
Palabra 2k-1
5
1. organización de la información en memoria
Ö 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
Alternativas de alineamiento
Dirección del byte
Dirección del byte
Ö Palabras no alineadas: permitir que una
palabra tenga cualquier dirección
0
3
0
1
2
7
4
5
6
7
9
10
11
13
14
15
Ø
4
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
1
2
5
6
8
9
10
11
8
12
13
14
15
12
k
k
3
...
...
2 -4 2 -3 2 -2 2 -1
2k-4 2k-3 2k-2 2k-1
palabras
alineadas
palabras
no alineadas
k
k
estructura y tecnología de computadores
6
1. organización de la información en memoria
Alternativas de ordenamiento
Ö 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
Dirección del byte
Dirección del byte
Palabra 0
0
1
2
3
Palabra 0
3
2
1
0
Palabra 4
4
5
6
7
Palabra 4
7
6
5
4
w
w
w
w
w
w
Palabra 2k-4 2k-4 2k-3 2k-2 2k-1
Big-Endian
w
w
w
w
w
w
Palabra 2k-4 2k-1 2k-2 2k-3 2k-4
Little-Endian
Ö Big-endian
Ø
Ø
orden coherente
facilita la ordenación y el volcada
Ö Little-endian
Ø
Ø
facilita la aritmética
facilita las conversiones de tamaño
estructura y tecnología de computadores
Ö 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:
184 185 186 187
12 34 56 78
Ö Little-Endian:
187 186 185 184
12 34 56 78
184 185 186 187
78 56 34 12
7
2. tipos de datos
Contenidos de la memoria
EJEMPLO
Ö El contenido de una palabra de memoria es una
colección de 0’s y 1’s
En una palabra de memoria de 32 bits
se puede codificar
Ø 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
a) Un número entero entre -(231-1) y +(231-1)
codificado mediante magnitud y signo
b31
...
b30
b1
b0
b1
b0
b = 0 para nos positivos
Bit de signo b31 = 1 para nos negativos
31
Magnitud = b30x230 + ··· + b 1x21 + b0x20
b) 32 dígitos Booleanos o lógicos
ü Enteros (Magnitud y signo, C’1, C’2, ...)
ü Reales (Punto fijo, Punto flotante, ...)
ü Decimales (BCD, Exceso-3, ...)
ð Booleanos o lógicos
b31
...
b30
bk = 0 ⇒ FALSE
bk = 1 ⇒ TRUE
0 ≤ k ≤ 31
c) Cuatro caracteres ASCII
ü TRUE, FALSE
ð Caracteres
8 bits
ü Letras, dígitos decimales, signos puntuación
ü Representación más común: ASCII
Ø Instrucciones
ð Código de operación +
Información de direccionamiento
Carácter
ASCII
8 bits
8 bits
Carácter
ASCII
Carácter
ASCII
8 bits
Carácter
ASCII
d) Una instrucción máquina
8 bits
Código de
Operación
24 bits
Información de Direccionamiento
estructura y tecnología de computadores
8
2. tipos de datos
Caracterización de los tipos de datos
Ö 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
Limita el rango y la precisió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
Tipos de datos
Numéricos
Enteros
Representaciones:
• Magnitud y signo
• C’1
• C’2
• ...
Reales
Decimales
Representaciones:
• Punto fijo
• Punto flotante
• ...
Representaciones:
• BDC
• Exceso-3
• ...
estructura y tecnología de computadores
Lógicos
Representaciones:
• Compacto
• No compacto
Caracteres
Representaciones:
• ASCII
• EBCDIC
• ...
9
2. tipos de datos
Representación de datos numéricos enteros
Ö Magnitud y signo (MS)
MS
C’1
C’2
POSITIVOS
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
NEGATIVOS
Ejemplo (tamaño = 4 bits)
Ø 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)
1000
1001
1010
1011
1100
1101
1110
1111
-0
-1
-2
-3
-4
-5
-6
-7
-7
-6
-5
-4
-3
-2
-1
-0
-8
-7
-6
-5
-4
-3
-2
-1
b3 b2 b1 b0
Ö 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)
Ø No simétrico
Ø Una única representaciones para el cero
Ø Rango (tamaño = n bits)
ð -(2n-1) ≤ x ≤ +(2n-1-1)
Uso: cálculos exactos, variables de control, índices
estructura y tecnología de computadores
10
2. tipos de datos
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
Punto
Fijo:
Signo
(1 bit)
Punto
Flotante:
Signo Exponente
(1 bit)
(8 bits)
b31 b30
Parte entera
(21 bits)
···
b31 b30 ··· b23 b22
Parte decimal
(10 bits)
b10
b9 ···
b0
Mantisa
(23 bits)
···
N = ± (b30*220 + b29*219 + .... + b10*20 + b9*2-1 + ....+ b0*2-10 )
N = ± 1,M * 2E
b0
Siendo E = (b30*27 + ....+ b23*20 )
estructura y tecnología de computadores
11
2. tipos de datos
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
Decimal
BCD
Exc.-3
0
1
2
3
4
5
6
7
8
9
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
Empaquetamiento
Ö Decimal empaquetado
Ø 2 dígitos decimales por byte
Dig. 1º Dig. 2º
Dig. 3º Dig. 4º
Dig. 5º Dig. 6º
Byte 1
Byte 2
Byte 3
Ö Decimal no empaquetado
Ø 1 dígito decimal por byte
X
Dig. 1º
X
Byte 1
Dig. 2º
Byte 2
X
Dig. 3º
Byte 3
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)).
estructura y tecnología de computadores
12
2. tipos de datos
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
Ö 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
estructura y tecnología de computadores
13
3. registros y pila de la arquitectura
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
estructura y tecnología de computadores
14
3. registros y pila de la arquitectura
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
Ö 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
estructura y tecnología de computadores
15
3. registros y pila de la arquitectura
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:
Operación
PUSH
0
MEMORIA
0
•
•
•
91
4
•
•
•
320
•
•
•
MOVE (SP), item
INCREMENT SP
Operación
POP (*) 0
MEMORIA
•
•
123
91
4
SP
PILA
SP
(Puntero de pila)
POP item ⇔
•
•
•
320
•
•
•
•
•
•
•
2k-1
2k-1
MEMORIA
SP
4
•
•
•
320
•
•
•
PILA
Situación
inicial
DECREMENT SP
MOVE new_item, (SP)
PILA
PUSH new_item ⇔
2k-1
123
new_item
item
91
(*) POP a partir de la situación inicial
estructura y tecnología de computadores
16
4. modos de direccionamiento
Definición
Ö 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
Modos de direccionamiento simples
Ö
Ö
Ö
Ö
Ö
Ö
Ö
Notación usada
Inmediato
Directo a registro
Directo a memoria (absoluto)
Indirecto con registro
Indirecto con pila
Indirecto con memoria
Indirecto con desplazamiento
estructura y tecnología de computadores
Ri Registro nº i de la CPU
(Ri) Contenido del registro Ri
(X) Contenido de la posición de memoria con
dirección X
EA Dirección efectiva de un operando
SP Puntero de pila (Stack Pointer)
17
4. modos de direccionamiento
Inmediato
Ö El operando está contenido en un campo
de la propia instrucción máquina
Ö Sintaxis: opcode #A
Directo a registro
Ö El operando está contenido en un registro
de la CPU
Ö Sintaxis: opcode Ri
Instrucción:
opcode
A
operando = A
Instrucción:
opcode
Ri
operando = (Ri)
Directo a memoria (absoluto)
Ö La dirección efectiva del operando está
especificada en la instrucción
Ö Sintaxis: opcode A
Instrucción:
opcode
Registros
R0
•
•
Ri
•
•
•
Rn
••
operando
••
•
Memoria
0
•
•
•
A
operando
•
•
•
2k-1
EA = A
estructura y tecnología de computadores
18
4. modos de direccionamiento
Indirecto con registro
Ö La dirección efectiva del operando está
almacenada en el registro especificado en
la instrucción
Ö Sintaxis: opcode (Ri)
Instrucción:
opcode
Ri
Memoria
0
EA = (Ri)
R0
•
•
Ri
•
•
•
Rn
•
•
•
Registros
••
operando
Direc. operando
••
•
•
•
•
2k-1
Indirecto con pila
Ö El operando está almacenado en la
cabecera de la pila del computador
(apuntada por SP)
Ö Sintaxis: opcode (SP)
Instrucción:
Pila
opcode
SP
operando
•
•
•
EA = (SP)
Indirecto con memoria
Ö La dirección efectiva del operando está
almacenada en la dirección de memoria
especificada en la instrucción
Ö Sintaxis: opcode (A)
estructura y tecnología de computadores
Instrucción:
opcode
0
Memoria
••
A
direc. operando
••
operando
EA = (A)
2k-1
••
19
4. modos de direccionamiento
Indirectos con desplazamiento
Ö 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
registro-base
Ö La dirección efectiva del operando se
calcula sumando el campo desplazamiento al contenido del registro
especificado
Ö Sintaxis: opcode desp(Ri)
Instrucción:
opcode
Ri
0
desp.
R0
•
•
Ri
•
•
•
Rn
Memoria
•
•
•
Registros
operando
••
•
•
•
+
••
•
2k-1
EA = (Ri)+desp
relativo
Ö Es un direccionamiento registro-base que
utiliza implícitamente el contador de
programa
Ö Sintaxis: opcode desp(PC)
Instrucción:
opcode
0
desp.
Memoria
•
•
•
operando
PC
•
•
•
+
2k-1
EA = (PC)+desp
estructura y tecnología de computadores
20
4. modos de direccionamiento
indexado
Ö La dirección efectiva del operando se
calcula sumando el campo desplazamiento al contenido del registro
especificado
Ö Sintaxis: opcode desp(Ri)
Instrucción:
opcode
Ri
0
A
R0
•
•
Ri
•
•
•
Rn
Memoria
•
•
•
Registros
operando
••
•
•
•
+
••
•
desp.
2k-1
EA = A +(Ri)
Instrucción:
registro-base indexado
opcode
Ri
Rj
R0
•
Rj
Ri
•
Rn
Ö La dirección efectiva del operando se
calcula sumando el campo desplazamiento al contenido del registro
especificado
Ö Sintaxis: opcode (Ri, Rj)
0
Registros
••
+
Memoria
•
•
•
operando
•
•
•
EA = (Ri) +(Rj)
estructura y tecnología de computadores
2k-1
21
4. modos de direccionamiento
Comparación de los modos de direccionamiento simples
Modo
Inmediato
Dir. Efectiva
Operando = A
Ventajas
No accede a memoria
Directo a memoria
Directo a registro
EA = A
Sencillo
Operando = (Ri) No accede a memoria
Espacio direcciones
Indirecto con mem. EA = (A)
grande
Espacio direcciones
Indirecto con reg.
EA = (Ri)
grande
Indirecto con desp.
EA = base+desp Versátil
Indirecto con pila
EA = (SP)
"No accede a
memoria"
Desventajas
Operando de magnitud
limitada
Espacio direcciones limitado
Nº limitado de registros
Dos accesos a memoria
Acceso a reg. y a memoria
Complejo. Accesos a reg y a
memoria
No siempre disponible
estructura y tecnología de computadores
22
4. modos de direccionamiento
Modos de direccionamiento complejos
Modo
Indirecto con registro
postincrementado
Indirecto con registro
postdecrementado
Indirecto con registro
preincrementado
Indirecto con registro
predecrementado
Registro-base indexado con
desplazamiento
Indirecto con registro
escalado
Registro-base escalado
Registro-base indexado y
escalado con despl.
Sintáxis
Opcode (Ri)+
Opcode desp(Ri,Rj)
Dir. Efectiva
EA = (Ri)
Ri = Ri + 1
EA = (Ri)
Ri = Ri –1
Ri = Ri + 1
EA = (Ri)
Ri = Ri – 1
EA = (Ri)
EA = (Ri)+(Rj)+desp
Opcode (Ri×S)
EA = (Ri) ×S
Opcode desp(Ri×S)
Opcode desp(Rj,Ri×S)
EA = (Ri) ×S+desp
EA = (Rj)+(Ri) ×S+desp
Opcode (Ri)Opcode +(Ri)
Opcode -(Ri)
Ö Se utilizan fundamentalmente para acceso a estructuras de datos complejas
(vectores, arrays, tablas, registros, etc.)
estructura y tecnología de computadores
23
5. aplicaciones de los modos de direccionamiento
Ö 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
Foto de la pila del sistema durante una ejecución
que realiza la secuencia de llamadas:
main → A → A → C
MEMORIA
0
SP
marco de
activación de C
puntero de
marco local
Ö 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
marco de
2ª activación de A
marco de
1ª activación de A
Ö Supóngase el siguiente programa:
main
A
B
marco global
puntero de
marco global
base de la pila
C
2k-1
estructura y tecnología de computadores
24
5. aplicaciones de los modos de direccionamiento
Acceso a variables atómicas
Ö ¿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
MEMORIA
desp.
V
puntero de
marco
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).
estructura y tecnología de computadores
25
5. aplicaciones de los modos de direccionamiento
Acceso a elementos de un array
Ö ¿qué suponemos?
Ø El primer índice del array es 0
Ø Los elementos del array tiene tamaño n bytes
MEMORIA
0
Ö ¿ qué conocemos?
Ø El array comienza en la dirección:
(puntero de marco) + desplazamiento
A[i]
i× n
Ö ¿cómo calcular la dirección del elemento i?
Ø (puntero de marco) + desplazamiento + i × n
puntero de
marco local
A[0]
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
comienzo
del array
A[1]
2k-1
estructura y tecnología de computadores
26
5. aplicaciones de los modos de direccionamiento
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
estructura y tecnología de computadores
Descargar