python34 ha scritto:
Salve ragazzi
Volevo sapere se qualcuno di voi conosce un sito,libro, qualsiasi cosa dove poter trovare esercizi o teoria per imparare il linguaggio assembly.
Vorrei iniziare a studiare seriamente ma parto da zero e mi risulta difficile.Cercando sulla rete trovo solamente slides di varie
università e capisco ancora meno poichè non sono ad esempio un manuale o libro,ma soltanto delle singole lezioni o argomenti.
Vi ringrazio in anticipo.
@MAW ha la tendenza ad esagerare: serve a poco avere DECINE DI RIFERIMENTI, ne SERVE UNO, al massimo DUE!!!
Il problema e': a che ti serve conoscere l'Assembly?
Nel 99.9% dei casi non ti serve a nulla: gli attuali compilatori C/C++ riescono a fare un GRAN LAVORO nel convertire un codice scritto in un linguaggio ad alto livello nell'equivalente assembler.
Non solo: sono in grado di utilizzare tecniche di ottimizzazione che il programatore medio non e' minimanente in grado di utilizzare.
Una alternativa interessante e' quella di INTEGRARE l'applicazione scritta in C/C++ con routine scritte in assembler, per motivi di performances.
In questo caso, ti basta la documentazione fornita con il compilatore su come integrare i due codici, e lo studio di particolari istruzioni assembler che servono per le tue necessita.
Ma si puo' fare pure di meglio: potrebbe NON SERVIRE nemmeno conoscere l'assembler!
Attuamente tutti i compilatori C/C++ mettono a disposizione una serie di funzioni
intrinsics: sono istruzioni assembler che puoi utilizzare come NORMALI FUNZIONI C, ed e' il compilatore che si arrangia a fare la conversione DIRETTA.
In questo modo puoi accedere alle istruzioni PIU' INTERESSANTI della piattaforma hardware, USANDO un linguaggio ad alto livello (e quindi maggiormente mantenibile).
Personalmente ti consiglierei quest'ultima strada (l'utilizzo delle funzioni
intrinsics, al limite integrazione Assembler+C/C++): e' un approccio molto generale che un domani potrai riutilizzare anche in altri contesti (ad esempio per programmare su PowerPC della IBM, o su qualche megaprocessore ultrapotente di futura generazione )
https://software.intel.com/sites/landingpage/IntrinsicsGuide/
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
https://www.amazon.com/Introduction-Bit-Windows-Assembly-Programming/dp/1484921968/ref=pd_bxgy_14_img_2?ie=UTF8&psc=1&refRID=PWY4Z3FECG9D3GE0HH44 (c'e' anche la versione per Linux)
Se si lavora in assembler, un tool molto utile e' il disassemblatore:
https://www.amazon.com/IDA-Pro-Book-Unofficial-Disassembler/dp/1593272898/ref=pd_sim_14_8?_encoding=UTF8&pd_rd_i=1593272898&pd_rd_r=TRCKQCRCTPX4NA61BWM5&pd_rd_w=tIIdj&pd_rd_wg=Iya5l&psc=1&refRID=TRCKQCRCTPX4NA61BWM5