Por que um programador de nível de montagem precisa da arquitetura de um processador?
All assembly does is replace bit-patterns of instruction with human-readable mnemonics. Alguns assemblers têm alguns poucos confortos como variáveis e macros, mas é só isso.
Você está efetivamente programando no nível do conjunto de instruções, o que significa que você precisa conhecer a semântica e as regras daquele ISA.
Para programar em assembly, você precisará:
- Conhecimento das instruções disponíveis, seus modos de endereçamento e seus efeitos colaterais.
- Conhecimento dos registros disponíveis: quantos são? Para que eles podem ser usados? Quais são as regras associadas à sua utilização?
E isso é apenas coisas ao nível do ISA. Se você quiser fazer as coisas bem, você precisará saber também sobre a implementação. Porque sejamos realistas: se você está fazendo coisas na montagem, você provavelmente está lidando com recursos muito limitados. Conhecer o ciclo e o custo de memória de cada instrução é importante para a velocidade. Para fins de tempo, você também precisará saber como o processador (e a máquina) lida com as interrupções.
E há outras coisas também. Por exemplo, você pode querer usar a pilha: que convenções ela usa? O processador tem um mapa de memória plana? Um segmentado? Como é tratado o I/O?
Estas são todas as coisas que um potencial programador de montagem precisa saber. Programar em assembly não se trata apenas de saber quais instruções estão disponíveis. Ao contrário de algo como C, não há abstração de hardware.
Artigos semelhantes
- Um Samsung Galaxy Tab S6 Lite pode ser usado em estudos de arquitetura por estudantes de arquitetura?
- Como é que um programador se torna um programador?
- Quais são os torneios de nível 1, de nível 2 ou de nível 3 no PUBG mobile?
- Porque é que a linguagem de montagem é melhor do que a linguagem de nível da máquina?