Casa > Q > Quão Difícil É A Linguagem De Montagem E É Muito Mais Difícil Do Que A Linguagem C?

Quão difícil é a linguagem de montagem e é muito mais difícil do que a linguagem C?

Linguagem de montagem não é difícil, mas é... é difícil. Você tem que estar muito atento ao hardware que você'está rodando, especialmente a CPU e seus registros. Você precisa aprender seu conjunto de instruções, e suas idiossincrasias - que operações definem que bandeiras? Você só precisa carregar um conjunto de flags de registro, ou você tem que fazer uma operação nele primeiro? O INC muda a bandeira Carry? É necessário algum estudo. Você mesmo tem que inicializar todas as variáveis, ou estar ciente de quais precisam e quais don't. Não há nenhum tipo de fundição em assembler - todas as variáveis são as mesmas, apenas etiquetas associadas a endereços na RAM. Você tem que ser disciplinado com as variáveis também, já que todas elas são globais em assembler. Se você precisa de funções matemáticas, além da simples adição de subtração multiplicar e (às vezes) dividir que vêm com a CPU, você mesmo tem que escrevê-las. E, claro, também não há funções de biblioteca convenientes que você possa incluir para qualquer outra coisa. Se você pode'não encontrar a fonte de um driver para (digamos) um LCD que outra pessoa escreveu, adivinhe quem'vai escrevê-lo! (Seja generoso e compartilhe.)

It's possível escrever código bom, claro e estruturado em assembler que normalmente é um pouco menor e um pouco mais rápido que um programa em C, embora seja possível's escrever código absolutamente terrível também, já que assembler não impõe nenhuma disciplina a você. A habilidade vem com a experiência. Eu cresci com assembler e cheguei tarde ao C, então eu acho o C irritante e restritivo - maldita sensibilidade a casos, protótipos de funções agravantes, e macros AAAARGHH!!! que se parecem exatamente com funções f'ing e você pode't encontrá-las quando você'está tentando editar o código de alguém's. Ao longo dos anos eu'construí uma enorme coleção de código que eu posso copiar e colar para fazer quase tudo, e eu geralmente posso fazer um programa assembler funcionando mais rápido do que o próximo cara pode fazer em C. Eu certamente posso depurar o meu mais rápido do que ele pode, já que o depurador apresenta em assembler, e eu tenho o código fonte comentado e posso segui-lo linha por linha.

De Arvad

Quais são as diferenças entre bytecode e código de máquina? O bytecode é específico apenas para Java? :: Quais são as vantagens de uma linguagem de montagem na programação sobre uma linguagem de máquina?