La differenza tra i linguaggi assembly ARM e x86-64 è così grande? Quanto sarebbe facile imparare uno se si conosce già l'altro?
A2A
È facile?
Sì e no.
Dipende da ciò che si intende realizzare, non conosco l'intero assembly Arm64/AArch64 o x86-64 ma ho fatto diversi progetti che richiedevano la conoscenza di entrambi.
Perché dico che dipende da ciò che si vuole realizzare, capire i registri e le modalità di indirizzamento ecc. è piuttosto semplice se si conosce uno dei due, imparare l'altro non è difficile, ho iniziato a imparare x86 prima perché dovevo portare un programma di Stack overflow a 32 bit a 64 bit (http://www-inst.eecs.berkeley.edu/~cs161/fa08/papers/stack_smashing.pdf), ora fare questa transizione all'interno della stessa architettura è stato piuttosto facile, probabilmente ha richiesto qualche settimana.
Io stavo anche imparando Arm32/AArch32 in parallelo per un progetto diverso, ancora una volta scrivere programmi di base o assembly in linea non sarà difficile.
Ora vi dirò cosa è difficile, scrivere efficiente e intendo efficiente alla granularità IPC (istruzioni per ciclo), questo richiede una comprensione molto profonda dell'architettura, cose come l'ordinamento della memoria (l'ordinamento della memoria rilassato è pazzo e per niente rilassante per il programmatore), SIMD (di nuovo richiede un sacco di sforzo nel benchmarking i.e. correttamente benchmarking), memoria transazionale, ecc.
Questo mi ha preso più di 2 anni e non sono sicuro di essere neanche lontanamente vicino ad essere un esperto, quindi è facile per compiti semplici, ma per complicati codici multithread, ad alte prestazioni, preparatevi ad avere i capelli grigi.