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.