Casa > A > A Diferença Entre As Linguagens De Montagem Arm E X86-64 É Assim Tão Grande? Quão Fácil Seria Aprender Uma Se Você Já Conhece A Outra?

A diferença entre as linguagens de montagem ARM e x86-64 é assim tão grande? Quão fácil seria aprender uma se você já conhece a outra?

A2A

É fácil ?

Sim e não.

Depende do que você pretende alcançar, eu não conheço toda a montagem Arm64/AArch64 ou x86-64, mas eu fiz vários projetos que exigiam conhecimento de ambos.

Por que eu digo que depende do que você quer alcançar, compreensão dos registros e modos de endereçamento, etc. é meio simples se você conhece um deles, aprender o outro não é difícil, eu comecei a aprender x86 primeiro pois tive que portar um programa de estouro de pilha de 32-bit para 64-bit (http://www-inst.eecs.berkeley.edu/~cs161/fa08/papers/stack_smashing.pdf), agora fazer essa transição dentro da mesma arquitetura foi meio fácil, provavelmente levou algumas semanas.

Eu também estava aprendendo Arm32/AArch32 em paralelo para um projeto diferente, novamente escrever programas básicos ou montagem em linha não vai ser complicado.

Agora eu vou te dizer o que é complicado, escrever eficiente e eu quero dizer eficiente para a granularidade do IPC(Instructions per cycle), isso requer um entendimento muito profundo da arquitetura, coisas como ordenação da memória (ordenação da memória relaxada é loucura e não é nada relaxante para o programador), SIMD (novamente requer muito esforço no benchmarking i.e. benchmarking correto), Transactional Memory, etc.

Isso me levou mais de 2 anos Eu não tenho certeza de que eu estou nem de longe perto de ser um especialista, então é fácil para tarefas simples, mas para multithreaded complicado, código de alto desempenho ser preparado para cabelos grisalhos.

De Rosetta Bieschke

O que está a Nokia a fazer que a Samsung e a Apple não conseguiriam fazer? :: Como usar o sensor de impressão digital no Linux