Skip to content

Material da disciplina de Linguagens de Montagem disponível para os alunos de Bacharelado em Ciência da Computação - Unioeste - Cascavel.

License

Notifications You must be signed in to change notification settings

bellorini/Unioeste-LinguagensDeMontagem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unioeste - Cascavel - Colegiado do curso de Bacharelado em Ciência da Computação

Linguagens de Montagem

2ª Série

Ementa: Estudo de linguagem de montagem e desenvolvimento de software básico. Estudo de conjuntos de instruções e modos de endereçamento. Implementação de construções de alto nível em linguagem de máquina.

Este repositório conterá todas as aulas da disciplina:

  • Apresentações em .pdf;
  • Arquivos de código-fonte exemplos e, se possível, exercícios resolvidos;
  • e outros arquivos relevante para a disciplina.

Outras informaçõe relevantes serão adicionadas em um futuro próximo.

Ferramentas necessárias:

TL;DR: no terminal Linux faça:
sudo apt update (pressione enter e insira sua senha de super usuário)
sudo apt install nasm binutils build-essential git-all (pressione enter)

  • Sistema Operacional Linux

    • A disciplina utiliza o Sistema Operacional Linux x86_64 com sabor Debian ou seus derivados (Mint, Ubuntu, MX, Deepin, etc).
    • TL;DR: Usaremos as Chamadas de Sistema Operacional (S.O.) Linux!
    • Porém, não é restrito o uso de outro S.O. Linux compatível não listado anteriormente. Porque Linux? A disciplina usa Chamadas de S.O. para apresentar texto no terminal, ler do teclado, abrir/fechar arquivos, entre outras, e essas Chamadas de S.O. estão implementadas no Kernel do S.O. Desta forma, cada S.O. pode implementar as Chamadas de maneiras diferentes e utilizar parâmetros não compatíveis com os que aprenderemos nesta disciplina.
  • Montador NASM

    • Principal ferramenta da disciplina, pois é com ela que montaremos nossos códigos-fontes para serem ligados e depois executados.
    • Para instalar, abra o terminal Linux e digite:
      sudo apt install nasm
  • Ligador ld

    • Após termos um código montado, é necessário ligá-lo com bibliotecas de carregamento e bibliotecas externas, quando necessário. Após a ligação completada é que é gerado efetivamente o arquivo executável.
    • ld faz parte da biblioteca binutils e já deve estar instalada. Caso contrário, instale, via terminal, esta biblioteca:
      sudo apt install binutils
  • Compilador gcc

    • A partir da Etapa 02 - Aula 11, usaremos bibliotecas C para nos ajudar com algumas tarefas mais complexas, por isso, passaremos a ligar nossos códigos-fontes com o GCC
    • gcc, normalmente, já vem instalado em algumas distribuições Linux, porém, caso na sua esteja ausente, no terminal faça:
      sudo apt install build-essential

FAQ

"Mas eu nunca utilizei terminal Linux! Como faz?"

Aluno de computação que nunca utilizou terminal Linux.
Possível solução: Curso gratuito introdutório de terminal Linux criado por Diego Mariano.

"Ah não, terei que instalar o Linux?"

Aluno de computação que não usa Linux ou compatíveis.
Possíveis soluções:

  1. Bare-Metal Dual-Boot Windows + Linux (modo hardcore): Como fazer dual-boot com Ubuntu e Windows 10 em seu notebook de Matheus Pratta.
  2. Virtualização Linux Visitante + Windows Hospedeiro (modo mamão com açucar): Como instalar o Ubuntu Linux no Windows 10 com o VirtualBox
  3. WSL2 do Windows 10 (modo mamão com açucar, porém com pitada de sal): Install Kali Linux – WSL 2 KEX GUI hacking setup (sugestão do Vinicius Muller).

"Ok, Linux compatível instalado, mas o que faço com esse tal de git?"

Aluno de computação que não conheçe o git.
Possíveis soluções:

  1. Básico e feio: use o botão CODE (em verde) no canto superior direito e faça o Download da pasta. Problema: terá que realizar um novo Download e substituir os arquivos antigos toda vez que alguma alteração acontecer.
  2. Intermediário e bonito: instale o git e clone o repositório:
    • Instale o git, no terminal Linux digite:
      sudo apt install git-all
    • Em seu computador local, crie um diretório e clone o diretório deste repositório com o comando:
      git clone https://github.com/bellorini/Unioeste-LinguagensDeMontagem.git
    • Muito bem, agora, toda vez que uma aula iniciar, entre no diretório local em seu computador e atualize o repositório com o comando:
      git pull origin main
      • Parabéns, seu diretório será atualizado automagicamente toda vez que executar este comando.

"Que legal, esse tal de git parece bacana! Onde posso saber mais sobre ele?"

Aluno de computação querendo ter um diferencial no seu currículo.
Possível solução: Documentação oficial do github.

Principais Referências: (em construção)

Livros, documentos e outros materiais que tem forte contribuição com a produção deste material.

Referências Secundárias: (em construção)

Artigos, livros ou outros documentos que de alguma forma contribuíram com algum ponto específico deste material.

  • Bartlett, Jonathan. Programming from the Ground Up. Rev 1.0. 2003.
    (Sintaxe AT&T, registradores, memória, funções.)
  • Hyde, Randall - The Art of Assembly Language by Randall Hyde. 2nd Edition.
    (Sintaxe AT&T, representação de dados, acesso à memória, aritmética legada.)
  • Duntemann, Jeff. Assembly Language Step-by-Step Programming with Linux. 3rd Edition.
    (Endianness, Flags, CMP, Jcc.)
  • Streib, James T. . Guide to Assembly Language A Concise Introduction. 1st Edition. 2011.
    (Registradores, movimentação de dados, aritmética legada, operações lógicas.)
  • Cavanagh, Joseph. X86 Assembly Language and C Fundamentals. 2013.
    (Sistema de numeração, modos de endereçamento, pilha, macros, ponto-flutuante (FPUx87, não mais utilizada neste ano, porém, mantido para os curiosos).)

About

Material da disciplina de Linguagens de Montagem disponível para os alunos de Bacharelado em Ciência da Computação - Unioeste - Cascavel.

Topics

Resources

License

Stars

Watchers

Forks