Sistemas Operacionais. Pilha de Execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Documentos relacionados
Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP

Nível da Arquitetura do Conjunto das Instruções

MICROPROCESSADORES II (EMA911915) SUB-ROTINAS E PILHA 2 O SEMESTRE / 2018

Conjunto de Instruções MIPS Parte III

Nível da Arquitetura do Conjunto das Instruções

Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos

Linguagem de Montagem Assembly

Exceções no Fluxo de Execução: Interrupções e Traps

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Organização de Computadores

Programação Imperativa. Lição n.º 16 A pilha de execução

Representação de Dados (inteiros não negativos)

Arquitetura de Computadores. Revisão Volnys Bernal. Agenda. Revisão: Arquitetura de Computadores. Sobre esta apresentação

Processos Volnys B. Bernal Versão de 20/03/2015. Agenda. Processos. Programa x Processo. Programa x Processo. Programa.

Programando em Assembly

Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos

Computadores de Programação (DCC/UFRJ)

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

Alocação Dinâmica de Memória

Compiladores Ambiente de Execução

Alocação Dinâmica de Memória. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Assembly IA32 Procedimentos

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Organização de Computadores

Alocação Dinâmica de Memória

Compiladores Geração de Código

Procedimentos. Sistemas de Computação

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

Compiladores Ambiente de Execução

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

TEÓRICA. lb $t0, 1($t1)

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS

25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de

Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Sistemas Operacionais. Rodrigo Rubira Branco

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I

Máquina Virtual. MEPA: Máquina de Execução para Pascal. Expressões. Características gerais

Microcontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Programação de Microcontroladores II

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

SCC Algoritmos e Estruturas de Dados I

7. A pilha e subrotinas

Ambientes de Execução

Ambientes de Execução

Computadores e Programação (MAB ) Lista 2 - Grupo de até 3 alunos - 90 pontos

Interrupções, Exceções e Chamadas ao SO

Procedimentos Chamada de Funções e Parâmetros

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Procedimentos Chamada de Funções e Parâmetros

Arquitetura e Organização de Computadores

TE091 Programação Orientada a Objetos Engenharia Elétrica

O que é uma variável?

Computadores e Programação (DCC/UFRJ)

Estrutura do tema ISA do IA-32

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

2º Estudo Dirigido CAP 3

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

Representação de Dados (inteiros não negativos)

JVM Máquina Virtual Java

Microcontroladores. Interrupções no Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão

Ordem de Bytes: Big Endian e Little Endian

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

x=0; y=x+1; x=&y+2; x 1000 y 1004

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Disciplina de Organização de Computadores I

Introdução à Organização de Computadores. Aula 8

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

Ponteiros e Tabelas. K&R: Capítulo 5

Arquitecturas Alternativas. Java Virtual Machine

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

Implementando subprogramas

Sistemas de Computação

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

Programação Estruturada

Implementação de subprogramas

Estrutura de uma função ( / procedimento )

Curso de Programação C em Ambientes Linux Aula 05

CURSO de CIÊNCIA DA COMPUTAÇÃO RIO DAS OSTRAS - Gabarito

Conceitos de Linguagens de Programação

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

SSC0611 Arquitetura de Computadores

Arquitetura e Organização de Computadores

Intel x AT&T - recapitulação

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Nível do Conjunto de Instruções Prof. Edson Pedro Ferlin

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios

INE5412 Sistemas Operacionais I

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Transcrição:

Eecução 17-29 - Volns Bernal 1 17-29 - Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br http://www.lsi.u.br/~volns Os problemas Controle do endereço de orno da função Controle do quadro da pilha de Laboratório de Sistemas Integráveis http://www.lsi.u.br/ 17-29 - Volns Bernal 3 17-29 - Volns Bernal 4 Os problemas Os problemas 1 - Retorno de subrotina (função) Quando uma subrotina (função) é ativada, o controle da deve ser transferido para a instrução inicial da subrotina. b() void b() Ao termino da subrotina, a próima instrução a ser eecutada deve ser a instrução posterior à instrução que ativou a subrotina 17-29 - Volns Bernal 5 17-29 - Volns Bernal 6 Os problemas 2 Variáveis locais As variáveis locais e parâmetros passados para a função devem eistir somente enquanto durar a função. Os problemas 3 Instâncias independentes Cada instância de uma subrotina deve possuir suas próprias instâncias de variáveis locais e parâmetros. b void b(int ) int i b b void b(int ) int i If ( ) b(k) void b(int ) int i If ( ) b(k) 17-29 Volns B. Bernal 1

Eecução 17-29 - Volns Bernal 7 17-29 - Volns Bernal 8 Finalidade Realizar o controle da de subrotinas de um programa: 1. Controle do endereço de orno da função; 2. Passagem dos valores dos argumento da função; 3. à função. Descrição Eaço de memória eecialmente reservado para organização de uma pilha de quadros (frame) de ativação (ou registro de ativação). Cada quadro (frame) correonde ao controle da ativação de uma função; Esta pilha de quadros é usada como memória auiliar durante a do programa 17-29 - Volns Bernal 9 17-29 - Volns Bernal 1 É reservado na memória virtual uma área eclusiva para a pilha de. Memória virtual Memória virtual b() função a() 17-29 - Volns Bernal 11 17-29 - Volns Bernal 12 Memória virtual Memória virtual b() void b() c() função b() função a() b() void b() c() void c() função c() função b() função a() 17-29 Volns B. Bernal 2

Eecução 17-29 - Volns Bernal 13 17-29 - Volns Bernal 14 Suporte pelo processador Instruções eeciais para subrotinas: CALL Chamada de subrotina: o Desvia o controle para uma subrotina salvando o endereço de orno (endereço da próima instrução) no topo da pilha. - Retorno de uma subrotina: o O controle do programa (PC) é transferido para o valor desempilhando do topo da pilha Controle do endereço de orno da função Registradores eeciais para controle da pilha de : SP (stack pointer): Contém o endereço do topo da pilha de 17-29 - Volns Bernal 15 17-29 - Volns Bernal 16 Controle do endereço de orno Realizado pelas instruções CALL e Controle do endereço de orno de funcionamento das instruções CALL e Programa em C void f1() Programa em assembler f2() void f2() 17-29 - Volns Bernal 17 17-29 - Volns Bernal 18 Controle do endereço de orno de funcionamento das instruções CALL e Controle do endereço de orno de funcionamento das instruções CALL e A instrução CALL salva o endereço de orno (endereço da instrução após CALL) na pilha de e transfere o controle para f2. A instrução ira o valor contido no topo da pilha de (endereço de orno) e transfere o controle para o endereço representado por este valor. 17-29 Volns B. Bernal 3

Eecução 17-29 - Volns Bernal 19 17-29 - Volns Bernal 2 Passagem dos valores dos argumento da função A pilha de é utilizada, também, para passagem dos argumentos da função. Os valores dos argumentos são inseridos na pilha de antes da ativação da instrução CALL. 17-29 - Volns Bernal 21 17-29 - Volns Bernal 22 void f2(int a, int b) int f1() f2(,); 17-29 - Volns Bernal 23 17-29 - Volns Bernal 24 17-29 Volns B. Bernal 4

Eecução 17-29 - Volns Bernal 25 17-29 - Volns Bernal 26 17-29 - Volns Bernal 27 17-29 - Volns Bernal 28 17-29 - Volns Bernal 29 17-29 - Volns Bernal 3 Variáreis locais também são alocadas na pilha de. As variáveis locais de uma função ficam alocadas no quadro da reectiva função na pilha de 17-29 Volns B. Bernal 5

Eecução 17-29 - Volns Bernal 31 17-29 - Volns Bernal 32 void f2(int a, int b) int ; int f1() f2(,); 17-29 - Volns Bernal 33 17-29 - Volns Bernal 34 4 btes 17-29 - Volns Bernal 17-29 - Volns Bernal 36 17-29 Volns B. Bernal 6

Eecução 17-29 - Volns Bernal 37 17-29 - Volns Bernal 38 Controle do quadro da pilha de de quadro da pilha Controle do quadro da pilha de void f2(int a, int b) int ; int ; Variáveis locais Endereço de orno Argurmentos da função f2 int f1() f2(,); da função f1 17-29 - Volns Bernal 39 17-29 - Volns Bernal 4 Controle do quadro da pilha de - Processador Intel Pentium Registradores eeciais: Registrador ESP: contém o endereço do topo da pilha Registrador EBP: contém a base do quadro Sentido do crescimento da pilha Por motivos históricos, a pilha geralmente cresce em direção aos endereços mais baios de memória. Assim, para alocar eaço para um endereço na pilha, devemos subtrair 4 de ESP no Pentium (um endereço no Intel Pentium ocupa 4 btes!). Para desalocar devemos somar 4 ao ESP. Eercício Seja a configuração da pilha em um processador Intel Pentium (little endian) mostrada no próimo slide. Suponha o valor do registrador ea = A1B2C3D4 (he) Qual é a configuração da pilha de após a da instrução a seguir? pushl %ea (empilha os 4 btes que representam o valor contido no registrador ea) 17-29 - Volns Bernal 41 17-29 - Volns Bernal 42 Eercício Memória Eercício Memória 4 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 A 4 B 4 C 4 D 4 E 4 F 4 1 e 4 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 A 4 B 4 C 4 D 4 E 4 F 4 1 D4 C3 B2 A1 e 17-29 Volns B. Bernal 7

Eecução Eercício 17-29 - Volns Bernal 43 Em relação ao slide anterior, qual é a configuração da pilha de após a da seguinte instrução: popl %ea (desempilha 4 btes do topo da pilha e armazena no registrador ea) Eercício Memória 4 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 A 4 B 4 C 4 D 4 E 4 F 4 1 17-29 - Volns Bernal 44 e 17-29 - Volns Bernal 45 17-29 - Volns Bernal 46 Controle do quadro da pilha de Arquitetura Intel Pentium Registrador O registrador é utilizado como referência para o quadro de ativação corrente O código gerado por um compilador na de uma chamada de função começa com: pushl % movl %e,% E termina com: movl %,%e popl % Controle do quadro da pilha de void troca (int *, int *) int tmp; tmp = *; * = *; * = tmp; mov %e, % sub $4, %e /* reserva eaço na pilha para tmp */ mov 8(%), %ea /* 1o parâmetro: endereço de */ mov (%ea), %ed /* pega valor de */ mov %ed, -4(%) /* tmp = * */ mov 12(%), %eb /* 2o parâmetro: endereço de */ mov (%eb), %ed /* pega valor de */ mov %ed, (%ea) /* * = * */ mov -4(%), %ed /* leitura do valor de tmp */ mov %ed, (%eb) /* * = tmp */ mov %, %e 17-29 - Volns Bernal 47 17-29 - Volns Bernal 48 Controle do quadro da pilha de Controle do quadro da pilha de mov %e, % sub $4, %e mov 8(%), %ea mov (%ea), %ed mov %ed,-4(%) mov 12(%), %eb mov (%eb), %ed mov %ed, (%ea) mov -4(%), %ed mov %ed, (%eb) mov %, %e e mov %e, % sub $4, %e mov 8(%), %ea mov (%ea), %ed mov %ed,-4(%) mov 12(%), %eb mov (%eb), %ed mov %ed, (%ea) mov -4(%), %ed mov %ed, (%eb) mov %, %e e 17-29 Volns B. Bernal 8

Eecução 17-29 - Volns Bernal 49 17-29 - Volns Bernal 5 Controle do quadro da pilha de Controle do quadro da pilha de mov %e, % sub $4, %e mov 8(%), %ea mov (%ea), %ed mov %ed,-4(%) mov 12(%), %eb mov (%eb), %ed mov %ed, (%ea) mov -4(%), %ed mov %ed, (%eb) mov %, %e e mov %e, % sub $4, %e mov 8(%), %ea mov (%ea), %ed mov %ed,-4(%) mov 12(%), %eb mov (%eb), %ed mov %ed, (%ea) mov -4(%), %ed mov %ed, (%eb) mov %, %e tmp e 17-29 - Volns Bernal 51 Controle do quadro da pilha de Eercício 17-29 - Volns Bernal 52 Qual é o valor numérico impresso na do programa a seguir? Endereços: -4(%) variável local tmp 8(%) parâmetro 12(%) parâmetro tmp - 4 btes 8 btes 12 btes int i; int mfunction() int i; i = i + 2; printf( %d\n,i); int main(int argc, char **argv) i = i + 3; mfuncion(); 17-29 Volns B. Bernal 9