Nome da Atividade
PROGRAMAÇÃO DE SISTEMAS
CÓDIGO
1110083
Carga Horária
68 horas
Tipo de Atividade
DISCIPLINA
Periodicidade
Semestral
Unidade responsável
CRÉDITOS
4
CARGA HORÁRIA TEÓRICA
2
CARGA HORÁRIA PRÁTICA
2
CARGA HORÁRIA OBRIGATÓRIA
4
FREQUÊNCIA APROVAÇÃO
75%
Ementa
Fundamentos da tradução de programas. Construção de montadores e macromontadores. Construção de ligadores ecarregadores de programas.
Objectives
Objetivo Geral:
A disciplina visa proporcionar ao aluno uma introdução teórico-prática aos sistemas de programação. São objetivos específicos da disciplina, colocar os alunos em contato direto com os recursos elementares de programação de baixo nível, associados à construção de componentes básicos em sistemas de programação de computadores, tratando aspectos elementares da tradução de programas como as linguagens de montagem, a ligação de módulos, bem como a carga e a execução de programas. A disciplina também visa exercitar o estudante na utilização da linguagem de programação C para a construção de módulos básicos de sistemas deprogramação.
Conteúdo Programático
1. Introdução
• Linguagens fonte, tradução de linguagens de programação e seus mecanismos
• Tipos de tradutores
• Principais funções dos tradutores e generalidades sobre suas implementações
2. Linguagens Mnemônicas e Construção de Montadores
• Características das linguagens mnemônicas ou de montagem
• Exemplos de programação em linguagem mnemônica
• Montadores de uma passagem e montadores de duas passagens
• Principais funções de um montador (assembler)
• Implementação de um montador para uma máquina hipotética
3. Processador de Macros
• Considerações sobre subprogramas e macros: conceitos, comparações, bibliotecas, definição e expansão de macros,
parâmetros e marcadores sintáticos
• Exemplos de uso de macros em linguagem mnemônica (macro assembler)
• Processadores de macros de uma passagem e processadores de macros de duas passagens: principais funções
• Definições aninhadas e chamadas aninhadas
• Implementação de um pré-processador de macros para uma linguagem mnemônica hipotética
4. Ligadores e Carregadores
• Considerações e conceitos sobre as funções da compilação à execução: relocação de endereços, ligação de módulos,
tratamento de bibliotecas, alocação de memória, carga do programa
• Carregadores: tipos e funções
• Ligadores: tipos, funções, tabelas de símbolos associadas, vetor de transferência
• Implementação de um ligador e um carregador para uma máquina hipotética
• Linguagens fonte, tradução de linguagens de programação e seus mecanismos
• Tipos de tradutores
• Principais funções dos tradutores e generalidades sobre suas implementações
2. Linguagens Mnemônicas e Construção de Montadores
• Características das linguagens mnemônicas ou de montagem
• Exemplos de programação em linguagem mnemônica
• Montadores de uma passagem e montadores de duas passagens
• Principais funções de um montador (assembler)
• Implementação de um montador para uma máquina hipotética
3. Processador de Macros
• Considerações sobre subprogramas e macros: conceitos, comparações, bibliotecas, definição e expansão de macros,
parâmetros e marcadores sintáticos
• Exemplos de uso de macros em linguagem mnemônica (macro assembler)
• Processadores de macros de uma passagem e processadores de macros de duas passagens: principais funções
• Definições aninhadas e chamadas aninhadas
• Implementação de um pré-processador de macros para uma linguagem mnemônica hipotética
4. Ligadores e Carregadores
• Considerações e conceitos sobre as funções da compilação à execução: relocação de endereços, ligação de módulos,
tratamento de bibliotecas, alocação de memória, carga do programa
• Carregadores: tipos e funções
• Ligadores: tipos, funções, tabelas de símbolos associadas, vetor de transferência
• Implementação de um ligador e um carregador para uma máquina hipotética
Bibliografia
Bibliografia Básica:
- PITTMAN, Thomas, PETERS, James. The art of compiler design: theory and practice. Englewood Cliffs: Prentice Hall, 1992. 420 p.
- AHO, Alfred V., SETHI, Ravi, ULLMAN JEFFREY D. Compilers: principles, techniques, and tools. Reading: Addison-Wesley, 1988. 796 p.
- HANLY, Jeri R. Essential C++ for engineers and scientists. 2. ed. Boston: Addison Wesley, 2002. 534 p.
Bibliografia Complementar:
- PRICE, Ana Maria de Alencar, TOSCANI, Simao Sirineo. Implementação de linguagens de programação. Porto Alegre: UFRGS. Instituto de Informática, 2001. 195 p. (Série Livros Didáticos. n.9)
- CALINGAERT, Peter. Assemblers, compilers, and Program translation. Potomac: Computer Science, 1979. 270 p. (Computer software engineering series)
- JOSÉ NETO, João. Introducão à compilação. Rio de Janeiro: LTC, 1987. 222 p.
- HENDRIX, James E. A small C compiler. 2. ed. Redwood City: M&T Books, 1990. 628 p.
- LEWIS, Philip M. II, ROSENKRANTZ, Daniel J. Stearns, Richard E. Compiler design theory. Reading: Addison-Wesley, 1978. 647 p. (The Systems Programming Series)