Está en la página 1de 29

Pontificia Universidad Catlica de Chile Escuela de Ingeniera Departamento de Ciencia de la Computacin

Arquitectura de Computadores
Clase 13

Subrutinas y Manejo de Stack

IIC 2342 Semestre 2008-2

Rubn Mitnik

Objetivos
Captulo 4 : Unidad de Procesamiento Central (CPU)

Objetivos

Entender cmo se implementan las funciones de alto nivel

como subrutinas en bajo nivel.

Entender la lgica del paso de parmetros, retorno de

resultados, y almacenamiento de direcciones de retorno en


subrutinas.

R.Mitnik

Arquitectura de Computadores

ndice
Captulo 4 : Unidad de Procesamiento Central (CPU)

4.1 Partes de la CPU. 4.2 Conjunto de Instrucciones y tipos de funcionalidad. 4.3 Ciclo de la Instruccin. 4.4 Diseo de una CPU bsica. 4.5 Modos de direccionamiento. 4.6 Instrucciones en lenguaje de mquina. 4.7 Subrutinas y Manejo de Stack. 4.8 Interrupciones de software y hadware. 4.9 CISC/RISC.
R.Mitnik 3 Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Cmo implementamos funciones a bajo nivel?

Subrutinas

Trozos de cdigo con funcionalidad predeterminada

R.Mitnik

Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin

Cdigo de su implementacin
Direccin de retorno

Parmetros Retornar resultados

R.Mitnik

Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin

Cdigo de su implementacin
Direccin de retorno

Parmetros Retornar resultados

R.Mitnik

Arquitectura de Computadores

Codigo de implementacin: Precauciones


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack
As s embler label ins tr param B R A s tart mult1 mult2 res ult zero one s tart L D A zero S T A res ult label1 L D A mult2 AND one B E Q label2 L D A res ult AD D mult1 S T A res ult label2 L D A mult2 SRA B NE label3 R TS label3 S T A mult2 L D A mult1 S LA S T A mult1 B R A label1

Inicio subrutina

Datos y resultado

Qu pasa si el programa principal estaba utilizando el registro Ac?


Solucin: Se usa el Stack (pila) Push Ac // guarda Ac en la pila LDA zero Pop Ac // recupera el valor de Ac de la pila RTS

kaput!!

Instrucciones

Salida de subrutina

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin

Cdigo de su implementacin

Kaput!

Direccin de retorno Parmetros Retornar resultados

R.Mitnik

Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin


Cdigo de su implementacin Direccin de retorno Parmetros Retornar resultados

R.Mitnik

Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin


Cdigo de su implementacin Direccin de retorno


Registros Stack

Parmetros Retornar resultados

R.Mitnik

10

Arquitectura de Computadores

Direccin de retorno
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas

Registros

Al llamar a una subrutina se carga un registro con la direccin de retorno de sta. Al retornar, carga el Program Counter (o Instruction Pointer) con el valor de dicho registro.
Desventajas Se dificulta la anidacin de subrutinas Se dificulta la implementacin de funciones recursivas Pierdo utilizacin de un registro Ventajas Simpleza
11 Arquitectura de Computadores

R.Mitnik

Direccin de retorno
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas

Stack

Al llamar a una subrutina hago PUSH del valor del Program Counter (o Instruction Pointer) Al retornar, hace POP del valor almacenado cargndolo de vuelta en el Program Counter. Desventajas Requiere manejar el stack Ventajas Anidacin de subrutinas (incluso recursivas) se logra de manera transparente.
12 Arquitectura de Computadores

R.Mitnik

Direccin de retorno por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh A4h ### ### ### Stack
R.Mitnik 13

Qu ocurre al llamar una subrutina?

A0h A1h A2h A3h A4h A5h A6h A7h CALL SUB Next Instr. Program Counter

Stack Pointer

C2h C3h C4h C5h C6h

Subroutine Code Return


Arquitectura de Computadores

Direccin de retorno por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh A4h ### ### ### Stack
R.Mitnik 14

Qu ocurre al volver de una subrutina?

A0h A1h A2h A3h A4h A5h A6h A7h CALL SUB Next Instr. Program Counter

Stack Pointer

C2h C3h C4h C5h C6h

Subroutine Code Return


Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin


Cdigo de su implementacin Direccin de retorno Parmetros Retornar resultados

R.Mitnik

15

Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin


Cdigo de su implementacin Direccin de retorno Parmetros


Registros Stack

Retornar resultados

R.Mitnik

16

Arquitectura de Computadores

Paso de parmetros
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas

Registros

Antes de llamar a subrutina cargo registros con los parmetros Debo conocer que registros ocupa la subrutina La subrutina lee los registros

Desventajas Nmero limitado de registros Ventajas Rapidez Simpleza


17 Arquitectura de Computadores

R.Mitnik

Paso de parmetros
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas

Stack

Antes de llamar a subrutina hago PUSH de los parmetros Debo saber en que orden mandarlos

Desventajas Complejo Requiere mayor coordinacin Ventajas Mayor espacio


18 Arquitectura de Computadores

R.Mitnik

Paso de parmetros por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh A4h B A ### ### ### Stack
R.Mitnik

Cmo paso los parmetros a una subrutina?

A0h A1h A2h A3h A4h A5h A6h A7h PUSH A PUSH B CALL SUB POP POP Next Instr.

Program Counter

Stack Pointer

Cmo accedo a los parmetros en la subrutina?


No puedo usar POP Hay que direccionar Ej: (SP+2) obtengo B (SP+3) obtengo A
19

C2h C3h C4h C5h C6h

Subroutine Code Return


Arquitectura de Computadores

Paso de parmetros por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh dato Stack Pointer

Cmo paso los parmetros a una subrutina?

A0h A1h A2h A3h A4h A5h A6h A7h PUSH A PUSH B CALL SUB POP POP Next Instr.

Program Counter

dato
A4h B A ### ### ### Stack

Qu pasa si hago otros PUSH en la subrutina?


Cambia el direccionamiento Ej: (SP+4) obtengo B (SP+5) obtengo A

C2h C3h C4h C5h C6h

Subroutine Code Return


Arquitectura de Computadores

R.Mitnik

20

Paso de parmetros por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh dato dato A4h B A ### ### ### Stack
R.Mitnik

Cmo paso los parmetros a una subrutina?

A0h A1h A2h A3h A4h A5h A6h A7h PUSH A PUSH B CALL SUB POP POP Next Instr.

Program Counter

Stack Pointer

Qu pasa si en la subrutina hago if(condicin) PUSH;?


Perd el direccionamiento Ej: (SP+???) obtengo B (SP+???) obtengo A Usamos otro puntero Base Pointer (registro)
21

C2h C3h C4h C5h C6h

Subroutine Code Return


Arquitectura de Computadores

Paso de parmetros por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh dato dato FFh A4h B A ### ### ### Stack
R.Mitnik

Cmo paso los parmetros a una subrutina?


Stack Pointer Frame (marco) Base Pointer
de la subrutina actual

A0h A1h A2h A3h A4h A5h A6h A7h PUSH A PUSH B CALL SUB POP POP Next Instr.

Program Counter

Frame (marco)
de la subrutina anterior

C2h C3h C4h C5h C6h

Subroutine Code Return


Arquitectura de Computadores

Direccionamos por BP Ej: (BP+2) obtengo B (BP+3) obtengo A


22

Paso de parmetros por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh

Cmo paso los parmetros a una subrutina?


Stack Pointer

A0h A1h A2h A3h A4h A5h A6h PUSH A PUSH B CALL SUB POP POP Next Instr.

Program Counter

FFh
A4h B A ### ### ### Stack Base Pointer
23

A7h

C2h C3h C4h C5h C6h

Subroutine Code Return


Arquitectura de Computadores

R.Mitnik

Paso de parmetros por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh dato dato FFh A4h B A ### ### ### Stack
R.Mitnik

Cmo retorno de la subrutina?


Stack Pointer
SP = BP-1 POP BP POP PC // BP = (SP) // PC = (SP)

A0h A1h A2h A3h A4h A5h A6h A7h PUSH A PUSH B CALL SUB POP POP Next Instr.

Program Counter

C2h C3h C4h C5h Base Pointer


24

Subroutine Code Return


Arquitectura de Computadores

C6h

Paso de parmetros por Stack


Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh FEh FFh ### ### ### Stack
R.Mitnik

Cmo retorno de la subrutina?


Stack Pointer
SP = BP-1 POP BP POP PC // BP = (SP) // PC = (SP)

A0h A1h A2h A3h A4h A5h A6h A7h PUSH A PUSH B CALL SUB POP POP Next Instr.

Program Counter

C2h C3h C4h C5h Base Pointer


25

Subroutine Code Return


Arquitectura de Computadores

C6h

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin


Cdigo de su implementacin Direccin de retorno Parmetros Retornar resultados

R.Mitnik

26

Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin


Cdigo de su implementacin Direccin de retorno Parmetros Retornar resultados

Registros

R.Mitnik

27

Arquitectura de Computadores

Subrutinas
Captulo 4 : Unidad de Procesamiento Central (CPU) Subrutinas y manejo del Stack

Requisitos de una funcin

Cdigo de su implementacin
Kaput!

Direccin de retorno
Registros Stack

Parmetros
Registros Stack

R.Mitnik

Retornar resultados
Registros
28 Arquitectura de Computadores

Resumen
Captulo 4 : Unidad de Procesamiento Central (CPU)

Resumen

Implementacin de funciones como subrutinas


Cdigo de su implementacin

Precauciones

Direccin de retorno

Registros Stack
Registros Stack Registros

Parmetros

Retornar resultados

R.Mitnik

29

Arquitectura de Computadores

También podría gustarte