Fundamentos da Programação em Baixo Nível
Find a file
2025-05-21 14:59:35 -03:00
curso exemplos da aula 4 2025-05-21 14:01:26 -03:00
LICENSE Initial commit 2025-05-13 01:05:54 -03:00
README.org inscrições fechadas 2025-05-21 14:59:35 -03:00

Fundamentos da Programação em Baixo Nível

O que vamos aprender

  • Noções de arquiteturas de computadores.
  • O que são programas para o sistema operacional.
  • O que são instruções de CPU.
  • Como a CPU executa instruções.
  • Como o GNU/Linux executa programas.
  • Como a memória é estruturada para executar programas.
  • Como montar programas com o NASM (The Netwide Assembler).
  • Como tornar programas em assembly executáveis.
  • O que são chamadas de sistema.
  • Como escrever programas para a linha de comandos.
  • Como abrir arquivos para leitura e escrita.
  • Como utilizar a biblioteca C padrão (glibc).
  • Como criar bibliotecas para uso em Assembly.
  • Como implementar funções para uso em C.
  • Como utilizar o GNU Debugger (GDB) para inspecionar dados na CPU e na memória.

Como vamos aprender

  • Serão 3 aulas online e ao vivo semanais por 6 semanas (via Jitsi).
  • Cada aula consistirá de uma apresentação em vídeo, discussões e demonstrações práticas.
  • Tópicos em vídeo gravados e publicados previamente no Youtube (acesso público).
  • Anotações, exercícios e exemplos neste repositório (acesso público).

O curso em si é o que acontece nas aulas ao vivo por videoconferência. Todo o conteúdo em vídeo e textos é público e estará disponível, para quem quiser estudar por conta própria, sob os termos da licença Creative Commons BY-SA 4.0.

Requisitos

  • Noções básicas de programação em C (prepare-se aqui).
  • Noções básicas de operação do GNU/Linux pelo terminal.
  • Uma instalação do GNU/Linux (pode ser em máquina virtual).
  • Muita curiosidade e vontade de aprender.

Conteúdo e carga horária

  • 18 aulas de até 2 horas.
  • Total aproximado de 35 horas.
Data Tópico
30/06 0. Sobre o curso
02/07 1. Arquitetura de computadores
04/07 2. Linguagens de montagem e a compilação
07/07 3. O formato binário ELF64
09/07 4. Mapeamento de memória no Linux
11/07 5. Pilha de hardware e pilha de memória
14/07 6. Vetor de argumentos de linha de comando
16/07 7. Vetor de ambiente
18/07 8. Fluxos de dados padrão
21/07 9. Chamadas de sistema
23/07 10. Conversão de caracteres para inteiros
25/07 11. Conversão de inteiros para caracteres
28/07 12. Sub-rotinas
30/07 13. Macros e bibliotecas
01/08 14. Abertura de arquivos para leitura
04/08 15. Abertura de arquivos para escrita
06/08 16. Utilizando funções da GLibc
08/08 17. Implementando funções para uso em C

As datas e tópicos podem mudar de acordo com o decorrer do curso!

Certificado de conclusão

Ao final do curso, será fornecido um certificado de conclusão mediante a apresentação de um projeto final.