Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El Procesador III
El Procesador III
Un procedimiento puede:
...
...
...
... subrutina:
1 ...
...
jal subrutina ...
... 3 ...
... ...
... 2
...
jal subrutina 4 jr $ra
...
...
Figura 1
Arquitectura de Computadores y Periféricos
Llamadas anidadas
Una subrutina llama a otra
B
A …
…
…
JSR B
JSR A
…
RTS
… RTS
Retorno de subrutina
A B A
… …
…
JSR B …
JSR A JSR A
… …
RTS
… RTS RTS
A
A … …
…
JSR A JSR A
JSR A
… …
… RTS RTS
- Un registro
- Al principio del procedimiento
- En la cabeza de la pila
RN PC + ∆
PC X
Donde RN es un registro que se utiliza siempre para este fin, PC es el contador de programa y
∆ es la longitud de la instrucción.
El procedimiento llamado puede ahora consultar el contenido de RN para utilizarlo
en el retorno posterior.
X PC + ∆
PC X + 1
La dirección de retorno queda almacenada en un lugar seguro.
Programa Subrutina
SUB1
l+k
…
…
l JSR SUB1
l+k
JMP (SUB1)
…
Figura 2
Figura 5
Figura 6
sp
8 8
sp sp
Direcciones
altas
R1 8 R1 8
R2 5 R2 8
Figura 7
Arquitectura de Computadores y Periféricos
Diferencia entre ordenamiento big endian y little endian
Figura 8
/*Main function to call above function for 0x01234567*/ Resultado little endian
76543210
/* function to show bytes in memory, from
location start to start+n*/
void show_mem_rep(char *start, int n)
{
int i; Se incrementa el
for (i = 0; i < n; i++) valor «i» en 1
printf(" %.x", start[i]);
printf("\n");
} Resultado big endian
01234567
Figura 9