Aprendendo a Programar em Assembléia - Recursos Úteis [fechado]
10
Seguindo um tópico anterior, fiquei interessado em aprender um pouco sobre a programação em Assembly. Não é muito o desejo de programar aplicativos úteis, apenas para ter uma ideia da programação de baixo nível para entender melhor o que está acontecendo.
Alguém pode recomendar livros ou recursos online para iniciantes?
Eu também gostei deste site . Boa introdução à programação de montagem! Eu usei este site como referência enquanto estudava no meu curso de Microprocessadores e Microcontroladores.
Excelente ... obrigado. Por curiosidade, quão intuitivo você achou aprender em comparação com uma linguagem moderna típica? Minha história é de 6 meses em c # (na indústria) e mais ou menos na mesma época em C ++ (no meu quarto :))
Darren Young
11
Eu me deparei com a programação da Assembléia no meu curso (ainda sou estudante) e, como você disse na sua pergunta, foi útil saber como os sistemas embarcados funcionam e tudo. No entanto, comparado às linguagens de alto nível (modernas como você diz), achei isso pouco útil. Você sabe, nunca vou usá-lo no meu campo - desenvolvimento web. :)
ykombinator
2
Este é um exercício acadêmico ou você pretende usar a linguagem assembly que aprende? Isso é coisa bastante especializada hoje em dia. A otimização do compilador tornou-se tão boa que mesmo algo como uma unidade de disco rígido de alto desempenho normalmente teria cerca de 1% de sua base de código escrita no assembler. Indo pela cadeia alimentar até os processadores de 4 bits ou 8 bits, você verá muito mais a linguagem assembly sendo usada.
Se você realmente deseja experimentar a linguagem assembly, escolha um processador que tenha um bom conjunto de instruções. Como sou um ex-funcionário da ARM, provavelmente sou tendencioso, mas achei que o conjunto de instruções do ARM era particularmente fácil de aprender - fui capaz de escrever um filtro FIR eficiente no mesmo dia no terceiro dia na empresa. Os parceiros de semicondutores da ARM estão vendendo cerca de um bilhão de núcleos ARM por trimestre hoje em dia, por isso é muito fácil encontrar uma empresa que esteja disposta a usar sua experiência em ARM ASM.
Existem muitas placas de avaliação do ARM disponíveis por cerca de US $ 50 para testar seu código - parece que o ARM Cortex M3 será imensamente popular. Ele usa o conjunto de instruções Thumb2 do ARM, que é um pouco mais obscuro do que o simples código ARM32, mas ainda é bastante fácil e muito poderoso.
É puramente acadêmico / autodidata. Gostaria de entender melhor o gerenciamento de memória de baixo nível e as linguagens de nível superior.
Darren Young
1
Basicamente, no sentido de programação de montagem, é necessário conhecer primeiro a arquitetura subjacente, depois a linguagem correspondente, por exemplo, com os microcontroladores PIC, você pode usar o compilador fornecido e a linguagem. Eu uso este site para fazer referência aos tutoriais de microcontroladores PIC.
Eu sempre achei que a parte mais difícil era o olá mundo, que geralmente é apenas uma função trivial chamada de um idioma de nível superior, como adicionar dois números. Depois de superar esse obstáculo, basta adicionar instruções e psuedo-ops (como definir dados) ao seu repertório.
Eu seria o segundo geekbrit, embora nunca tenha usado o ARM. Uma arquitetura mínima como essa seria não apenas mais fácil, mas também mais próxima de ter um legítimo - em oposição a apenas um objetivo didático.
Eu tenho um conjunto de instruções, montador e simulador, com algumas lições criadas apenas para esse fim. Ainda não tenho comentários sobre o quão bom ou ruim eu fiz, mas está lá fora, aguarde 15 minutos ou meia hora para ver se isso ensina alguma coisa. http://github.com/dwelch67/lsasim Depois disso, tenho alguns simuladores de conjunto de instruções que você pode experimentar, simples, sem frescuras, devem ser executados em qualquer lugar em que você tenha um compilador C, etc.
Respostas:
Livro recomendado: The Art of Assembly Language Programming .
Eu também gostei deste site . Boa introdução à programação de montagem! Eu usei este site como referência enquanto estudava no meu curso de Microprocessadores e Microcontroladores.
fonte
Este é um exercício acadêmico ou você pretende usar a linguagem assembly que aprende? Isso é coisa bastante especializada hoje em dia. A otimização do compilador tornou-se tão boa que mesmo algo como uma unidade de disco rígido de alto desempenho normalmente teria cerca de 1% de sua base de código escrita no assembler. Indo pela cadeia alimentar até os processadores de 4 bits ou 8 bits, você verá muito mais a linguagem assembly sendo usada.
Se você realmente deseja experimentar a linguagem assembly, escolha um processador que tenha um bom conjunto de instruções. Como sou um ex-funcionário da ARM, provavelmente sou tendencioso, mas achei que o conjunto de instruções do ARM era particularmente fácil de aprender - fui capaz de escrever um filtro FIR eficiente no mesmo dia no terceiro dia na empresa. Os parceiros de semicondutores da ARM estão vendendo cerca de um bilhão de núcleos ARM por trimestre hoje em dia, por isso é muito fácil encontrar uma empresa que esteja disposta a usar sua experiência em ARM ASM.
Existem muitas placas de avaliação do ARM disponíveis por cerca de US $ 50 para testar seu código - parece que o ARM Cortex M3 será imensamente popular. Ele usa o conjunto de instruções Thumb2 do ARM, que é um pouco mais obscuro do que o simples código ARM32, mas ainda é bastante fácil e muito poderoso.
Este pequeno painel parece muito legal, por 80 euros: http://www.olimex.com/dev/stm32-103stk.html
fonte
Basicamente, no sentido de programação de montagem, é necessário conhecer primeiro a arquitetura subjacente, depois a linguagem correspondente, por exemplo, com os microcontroladores PIC, você pode usar o compilador fornecido e a linguagem. Eu uso este site para fazer referência aos tutoriais de microcontroladores PIC.
fonte
Eu sempre achei que a parte mais difícil era o olá mundo, que geralmente é apenas uma função trivial chamada de um idioma de nível superior, como adicionar dois números. Depois de superar esse obstáculo, basta adicionar instruções e psuedo-ops (como definir dados) ao seu repertório.
Eu seria o segundo geekbrit, embora nunca tenha usado o ARM. Uma arquitetura mínima como essa seria não apenas mais fácil, mas também mais próxima de ter um legítimo - em oposição a apenas um objetivo didático.
fonte
Eu tenho um conjunto de instruções, montador e simulador, com algumas lições criadas apenas para esse fim. Ainda não tenho comentários sobre o quão bom ou ruim eu fiz, mas está lá fora, aguarde 15 minutos ou meia hora para ver se isso ensina alguma coisa. http://github.com/dwelch67/lsasim Depois disso, tenho alguns simuladores de conjunto de instruções que você pode experimentar, simples, sem frescuras, devem ser executados em qualquer lugar em que você tenha um compilador C, etc.
fonte