Nome da Atividade
PROGRAMAÇÃO DE SISTEMAS
CÓDIGO
22000237
Carga Horária
60 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.
Objetivos
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:
- AHO, Alfred V., SETHI, Ravi, ULLMAN JEFFREY D. Compilers: principles, techniques, and tools. Reading: Addison-Wesley,1988. 796 p. ISBN 0201100886
- PITTMAN, Thomas, PETERS, James. The art of compiler design: theory and practice. Englewood Cliffs: Prentice Hall, 1992.420 p. ISBN 0130481904
- HANLY, Jeri R. Essential C++ for engineers and scientists. 2. ed. Boston: Addison Wesley, 2002. 534 p. ISBN 0201741253
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) ISBN 8524106395
- CALINGAERT, Peter. Assemblers, compilers, and Program translation. Potomac: Computer Science, 1979. 270 p. (Computersoftware engineering series) ISBN 0914894234
- JOSÉ NETO, João. Introducão à compilação. Rio de Janeiro: LTC, 1987. 222 p. ISBN 8521604831
- HENDRIX, James E. A small C compiler. 2. ed. Redwood City: M&T Books, 1990. 628 p. ISBN 0934375887
- LEWIS, Philip M. II, ROSENKRANTZ, Daniel J. Stearns, Richard E. Compiler design theory. Reading: Addison-Wesley, 1978.647 p. (The Systems Programming Series) ISBN 0201144557
Turmas Ofertadas
Turma | Período | Vagas | Matriculados | Curso / Horários | Professores | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
M1 | 2024 / 2 | 35 | 35 |
Ciência da Computação (Bacharelado) Engenharia de Computação (Bacharelado) Horários
|
ANDERSON PRIEBE FERRUGEM Professor responsável pela turma |
Disciplinas Equivalentes
Disciplina | Curso |
---|---|
PROJETOS EM COMPUTAÇÃO I | Ciência da Computação (Bacharelado) |
PROGRAMAÇÃO DE SISTEMAS | Engenharia de Computação (Bacharelado) |