Fluxo de controle

7
Fluxo de Controle Saindo um pouco da visão de instruções separadas, vamos passar a olhar um programa como um todo, incluindo a ordem e a maneira como são executadas Fluxo de controle é justamente a ordem em que as instruções de um programa, armazenadas sequencialmente na memória, são executadas 1

Transcript of Fluxo de controle

Page 1: Fluxo de controle

1

Fluxo de Controle Saindo um pouco da

visão de instruçõesseparadas, vamos passara olhar um programacomo um todo, incluindoa ordem e a maneiracomo são executadas

Fluxo de controle é justamente a ordem em que as instruções de um programa, armazenadas sequencialmente na memória, são executadas

Page 2: Fluxo de controle

2

A essa altura, já estamos cansados de saber que as instruções de um programa, mesmo armazenadas sequencialmente na memória, não são necessariamente executadas na mesma sequência, por causa dos desvios que podem ocorrer ao longo da execução

Excetuando os desvios, também já vimos e revimos que a execução da próxima instrução se dá através da incrementação do contador de programa (PC), o qual indica o endereço da instrução na memória

Assim, temos os seguintes gráficos:

Page 3: Fluxo de controle

3

O gráfico à esquerda representa os valores de PC ao longo do tempo em uma execução totalmente sequencial (ideal), enquanto o gráfico à direita exibe esses valores com a ocorrências de desvios

Page 4: Fluxo de controle

4

Assim como em um programa escrito em linguagem de alto nível, é melhor organizar as instruções em métodos/funções em vez de deixar a “main” com um amontoado de instruções diferentes, o um macroprograma é melhor estruturado em procedimentos

O fluxo de controle também é alterado com a chamada de um procedimento, mas com a vantagem de que a execução retorna à linha da chamada após o seu término

Quando falamos sobre pilhas pela primeira vez, vimos que a chamada de um procedimento adiciona na pilha o endereço da chamada, justamente para que esse retorno aconteça

Page 5: Fluxo de controle

5

Imagine os dois retângulos abaixo como sequências de instruções sendo executadas

O procedimento à esquerda é chamado do programa principal, e chama vários outros procedimentos em pontos distintos

Page 6: Fluxo de controle

6

Em alguns casos, são necessárias as chamadas co-rotinas, isto é, quando um procedimento A chama um procedimento B, e o mesmo após executar algumas instruções, volta a chamar o procedimento A. Este, por sua vez, retoma a execução a partir da linha onde o procedimento B havia sido invocado

Page 7: Fluxo de controle

7

Outro modificador do fluxo de controle de um programa são as traps (armadilhas) que param a execução do programa por motivos de força maior. Ocorrências de overflow e outros tipos de exceções são alguns dos motivos

Finalmente, existem as interrupções, que, assim como as traps, interrompem a execução de um programa. Porém, desta vez, trata-se de uma parada temporária, geralmente para dar vez a operações de E/S que, como vimos, tem prioridade sobre as demais