150 likes | 302 Views
Assembly. Equipe: David Lopes Embiruçú (dle) Emanuel Felipe Príncipe Carvalho (efpc) Luis Otávio Cavalcante Borba (locb) Rosana Silva Matos (rsm2). Assembly. “There are three reasons for using assembly language: speed, speed, and more speed.” Autor e data desconhecidos. História.
E N D
Assembly Equipe: David Lopes Embiruçú (dle) Emanuel Felipe Príncipe Carvalho (efpc) Luis Otávio Cavalcante Borba (locb) Rosana Silva Matos (rsm2)
Assembly “There are three reasons for using assembly language: speed, speed, and more speed.” Autor e data desconhecidos
História • Criada nos anos 50 com o intuito de tornar a programação mais humana • Antes do assembly os programadores tinham que programar pensando em 0’s e 1’s • Essa forma de programar tornava tanto a escrita como a leitura dos programas difícil e confusa • Uma grande quantidade de programas foram escritos inteiramente em assembly antes do aparecimento das HLL (High Level Languages) nos anos 70 e no inicio dos anos 80
Paradigma • Classificação • Linguagem de primeira geração • Sem fontes que especifiquem o seu paradigma • Conclusão • Peculiaridade que se aproxima do paradigma imperativo • No entanto o Fortran foi a primeira linguagem classificada como tal
Utilização • Por ser uma linguagem de baixo nível, assembly foi bastante utilizada para a escrita de programas que precisavam de • alto desempenho, baixo consumo de memória ou que para realizar alguma ação que uma HLL não permitia • Exemplos • a maioria das HLL’s não permitem o envio de um byte para a porta serial • desenvolvimento de algumas partes dos sistemas operacionais que necessitam de um alto desempenho • desenvolvimento de drivers de dispositivos, como os drivers de mouses e impressoras • implementação de rotinas de alta velocidade para compressão e encriptação de dados e em otimizações de rotinas gráficas • também pode ser utilizado em códigos maliciosos, como vírus de computador
Sintaxe • A sintaxe de Assembly depende intrinsecamente do assembler em questão, diferindo geralmente apenas os mnemônicos e diretivas • Hoje em dia duas vertentes de sintaxe se destacam, At&t e x86 • Principais diferenças: • Registradores • Origem/Destino • Constantes • Comandos • Endereçamento através dos registradores
Especificação • Ligação íntima de assembly e seus montadores • não é possível apresentar uma documentação da linguagem sem que essa envolva algum assembler • Assembly também é extremamente dependente da arquitetura sobre o qual é feito • Cada dispositivo tem seu próprio assembly e há uma especificação para cada um deles • Principais assemblers que usam sintaxe Intel: • Fasm (Flat Assembler) • Masm (Microsoft Assembler) • Nasm (Netwide Assembler) • Tasm (Turbo Assembler) • Principais assemblers que usam sintaxe At&t: • Gnu Gas
Implementação • Plataforma: apenas para High Level Assembly (HLA) • Compiladores: fasm, goasm, masm, nasm, tasm, gas entre outros • Interpretadores: não há
Ambientes de desenvolvimento • Editores como Notepad, Context, gedit, Emacs e editores de texto em geral servem como ambientes rústicos de trabalho • Alguns compiladores seguem acompanhados de IDEs • Turbo Assembler IDE • AsmEdit que acompanham o Tasm e WinAsm • Quick Editor que acompanha o Masm
Exemplos de programas • Os sistemas operacionais modernos com trechos de código em assembly em seus device drivers • Sistemas onde é necessário extremo controle sobre o código ou mesmo sistemas em tempo real como jogos MMORPG • Sistemas onde não existem HLL (sistemas muito novos) • Exemplo de um hello world feito com a sintaxe x86 e para o Nasm:
Vantagens • Velocidade. Programas em linguagem assembly são geralmente os programas mais rápidos. • Espaço. Os programas em linguagem assembly são geralmente menores. • Capacidade. Você pode fazer coisas em assembly que são difíceis ou impossíveis em linguagens de alto nível. • Conhecimento. Seu conhecimento em assembly irá ajudar a escrever melhores programas, mesmo usando linguagens de alto nível. • Total domínio do processo de geração de código por parte do programador.
Desvantagens • Difícil de aprender, de ler, entender, debugar, escrever e difícil manutenção • Programar em assembly consome muito tempo. • Hoje em dia as máquinas são rápidas e não precisamos mais usar assembly. • Se você precisar de mais velocidade é melhor escolher um algoritimo melhor do que trocar para o assembly. • As máquinas hoje em dia têm muita memória, então salvar espaço usando o assembly não é importante. • A linguagem não é portável.
Conclusão • Chegamos a uma breve conclusão: • Apesar de ter perdido sua importância na implementação de softwares, assembly possivelmente nunca perderá sua utilidade na fabricação de determinados artefatos de software. Esse fato se dá pela característica de extremo baixo nível desta linguagem.
Perguntas? • A hora é essa!