Voglio avere un libro di assemblaggio per imparare l'assemblaggio, e stavo vagando se ottengo un libro per il processore intel x86 ci saranno problemi nell'assemblare il codice su un processore amd?
Voglio avere un libro di assemblaggio per imparare l'assemblaggio, e stavo vagando se ottengo un libro per il processore intel x86 ci saranno problemi nell'assemblare il codice su un processore amd?
Per la maggior parte non dovresti notare alcun problema. Qualsiasi testo introduttivo utilizzerà mnemonici (comandi) e macro molto comuni. Intel ha provato a introdurre un processore a 64 bit, Itanium IA-64, che ha interrotto la compatibilità con la famiglia di processori 8086. AMD ha intensificato e progettato un processore a 64 bit che ha continuato a funzionare con una programmazione precedente. Ovviamente, questo è quello che è diventato popolare e Intel ha dovuto abbandonare IA-64 e creare qualcosa come AMD. (Duntemann 106-107)
Quindi ora sia AMD che Intel funzionano con una serie di istruzioni che funzionano quasi esattamente allo stesso modo. Piccole cose qua e là, ma perché il mercato lo richiede ci sono piccole differenze per noi programmatori. Tutto quello che imparerai si dirà quando un particolare mnemonico è arrivato e su quali modelli inizia a lavorare, per tutti tranne che per le cose più recenti e oscure che probabilmente non ti serviranno per un po 'di tempo.
Consiglio vivamente il linguaggio Step by Step Assembly di Jeff Duntemann. Ho imparato da questo originariamente 15 anni fa. Stavo per impararlo e ho comprato un altro libro ... Non ha funzionato. Così ho scoperto che Duntemann aveva rilasciato una nuova edizione nel 2009. Fa una veloce cover delle differenze con alcuni aspetti di x86_64 ma si concentra su 32 bit. È davvero una guida alla programmazione frontale con più di un semplice assemblaggio. Modifica, buon commento, collegamento, come la cpu sposta i dati, il conteggio dei numeri di base, ecc.
Il suo sito web. link
Link Amazon per il libro: link
Penso che sarà compatibile (ma dipende ancora da quale AMD stai usando), come citato in Wiki :
x86 assembly language is a family of backward-compatible assembly languages, which provide some level of compatibility all the way back to the Intel 8008. x86 assembly languages are used to produce object code for the x86 class of processors, which includes Intel's Core series and AMD's Phenom and Phenom II series.
Avrai per lo più le stesse istruzioni.
Esiste un'istruzione denominata "CPUID" che consente, tra le altre cose, di identificare il processore. Ovviamente darà risultati diversi su CPU AMD e Intel. E una volta che sai quale processore hai, devi seguire le istruzioni nei manuali di AMD e Intel separatamente per ottenere maggiori informazioni sul processore.
Ogni processore ha un diverso set di funzionalità (ad esempio MMX, SSE, SSE2, SSE3 e così via) e si utilizza l'istruzione CPUID per trovare le funzionalità disponibili. Una volta che una funzionalità è disponibile, è la stessa su tutti i processori. Alcune istruzioni erano sempre disponibili solo su un processore; quelle istruzioni di solito non sono usate da nessuno.