Níveis de Abstracção Nível 5 Aplicação Programador Nível 4 Programa Linguagem de Alto Nível Compilador Nível 3 Programa em Linguagem Assembly “Assembler” Nível 2 Nível 1 Nível 0 Programa em Linguagem Máquina Micro-programa em Linguagem de Transferência de Registos Sistema Digital (CPU) Projectistas do Processador Projectistas de Sistemas Digitais 1 Níveis de Abstracção ¾ Cada nível de abstracção permite que sejam realizadas acções mais complexas e especializadas ¾ Os diferentes níveis de abstracção criados sobre o CPU tornam os computadores mais poderosos e simples de usar ¾ O nível de abstracção mais baixo a considerar é o da linguagem máquina, que é constituída por um conjunto de bits, directamente interpretável pelo processador 2 Linguagens ¾ O computador utiliza normalmente dois níveis de linguagem: • Linguagem máquina Utilizada para transmitir instruções à máquina (hardware) de modo a desempenhar as funções básicas do CPU; • Linguagens criadas sobre a linguagem máquina Linguagens que têm capacidades características particulares. e 3 Linguagens ¾ A programação directamente em linguagem máquina exige dos programadores um esforço muito grande de memorização e de consulta de documentação, revelando-se muito ineficiente em termos de tempo investido. ¾ A programação de um computador pode e deve ser feita utilizando níveis de abstracção superiores usando linguagens de alto nível (Pascal, C, Java). Os programas escritos nestas linguagens têm de ser posteriormente traduzidos para linguagem assembly e daí para linguagem máquina, antes de serem executados pelo processador. 4 Compiladores e Interpretadores ¾ Os compiladores e os interpretadores permitem ao computador entender programas escritos em linguagens de programação de alto nível ¾ Compiladores (tradutores) Traduzem as linguagens de programação para a linguagem máquina ¾ Interpretadores (simuladores) Simulam a execução dos programas de modo a produzir o efeito desejado 5 Compiladores e Interpretadores ¾ Os compiladores e os interpretadores programas escritos na linguagem máquina são Linguagem Programação Alto-nível Compilador Linguagem Máquina Linguagem Programação Alto-nível Interpretador Resultado 6 Porquê Assembly ? Permite analisar muitos aspectos da arquitectura e da organização de um computador que estão escondidos do programador de uma linguagem de alto nível: ¾ Mostra como os programas interagem com o sistema operativo, processador e BIOS; ¾ Mostra como a informação é representada e armazenada na memória ou em componentes externos; ¾ Clarifica a forma como o processador recebe e executa instruções e como estas instruções, por sua vez, acedem e processam dados; ¾ Clarifica como um programa acede a componentes externos; 7 “Assemblers” O “Assembler” é um programa tradutor que recebe um ficheiro de dados .ASM (ficheiro em texto simples com o código fonte em Linguagem “Assembly” ou Simbólica) e traduz o mesmo para um ficheiro executável .COM ou .EXE (em Linguagem Máquina). “Assembly” Programa fonte Linguagem Máquina “Assembler” Programa objecto Dados Resultados 8 Falha vs Erro O erro (error) pode ser definido como algo que se encontra mal no código fonte, em termos de sintaxe ou semântica, e que impede o “assembler” de completar a tradução do código. A falha (bug) é uma incorrecção na estrutura do programa, que não é detectada pelo “assembler”, mas com que o programador se depara na execução do programa quando este gera um resultado imprevisto. Ambos devem ser corrigidos no código fonte. Uma vez que as falhas (bugs) são mais difíceis de detectar, existem programas específicos para a sua detecção e correcção. 9 “Debbugers” O “debbuger” (depurador) é um programa destinado a auxiliar o programador a localizar e corrigir as falhas dos programas. Permitem que o programador visualize no ecrã a execução das instruções do programa, uma a uma, e os seus efeitos nos diversos componentes que compõem a estrutura base do computador. Do ponto de vista do utilizador os “debbugers” são mais complexos que os “assemblers”, pois permitem que se façam inúmeras operações. 10