Imparare Assembly AVR

Ciao a tutti
Premetto che conosco l'assembly x86 e i principali meccanismi dell'architettura dei calcolatori, vorrei "scuriosare" anche l'assembly di un microcontrollore per avere soprattutto un controllo più preciso sul "timing" dei programmi.
Ho visto gli appunti "Beginner's introduction to AVR assembler language" disponibili anche in PDF da AVR-Tutorial, purtroppo non ho trovato dei veri e propri testi come invece si trovano su processori Intel e AMD.
Qualcuno ha letto quegli appunti? E' molto complicato passare da x86 ad AVR e ne vale la pena?
Il mio dubbio più grande è su quanto sia longevo l'investimento di tempo su tale linguaggio e sui dettagli dell'architettura, se un domani AVR cambia tutto? x86 è diciamo abbastanza longevo e a meno di aggiunte le basi principali non cambiano molto, secondo voi sarà così anche con AVR?

beh, puoi trovare l'elenco dei comandi col tempo di clock nel manuale dell'at-mega... per quanto riguarda l'architettura: bho!

Più che altro la domanda è: a che ti serve?
Cioè, ci devi lavorare oppure no? Se devi lavorare con questi micro, allora l'investimento vale il tempo perso. Altrimenti a che ti serve lavorare in assembly? A parte operazioni time-critical (come la generazione di segnali video), con il C puoi fare tutto e di più.

Un paio di giorni fa ho trovato un pdf che si chiama "8-bit AVR Instruction set" sono 160 pagine ed è proprio dell' ATMEL, tutte le istruzioni una per una con alcuni esempi, non è proprio specifico del 328p, ma ho visto che le istruzioni non disponibili su tutti i mic sono un 2 o 3. Per usarlo inline con l'IDE di Arduino ti consiglio di leggere Tricky C, il mio pdf in italiano si chiama "Programmare in C il testo considerato la bibbia per imparare la programmazione in c", $) A parte che è spiegato benissimo il C, più avanti gli esempi sono in Assembly inline C.
Ciao.

Come detto per avere un controllo maggiore sulla generazione di segnali (onde quadre, sinusoidali, etc..) a specifiche frequenze, utili per alcuni esperimenti sempre nell'ottica dell'hobby.

Il pdf delle istruzioni AVR l'ho già visto ma è troppo reference e non da un'idea dell'architettura che c'è nel micro, serve qualcosa più "libro".

Il libro sul C non credo abbia esempi di assembly AVR, il problema non è chiamare tramite la keyword ASM il codice assembly, è proprio capire meglio il micro e i registri/istruzioni/etc per scrivere istruzioni Assembly..

La manipolazione dei registri la impari conoscendo i registri stessi, che sono ben descritti nel reference del micro.
Io ho imparato ad usare i timer e gli interrupt manipolando manualmente i registri proprio leggendo il datasheet. Una volta che sai "cosa" devi fare, il "farlo" in C o in assembly fa poca differenza.

Hai colto nel segno, in genere libri che descrivono i registri e l'architettura di una determiata piattaforma sono proprio libri sull'assembly perchè permette di avere un accesso totale alla piattaforma.
Conosci qualche libro che spieghi com'è fatta, magari con degli esempi a parte il datasheet?

No, mi spiace. Non so neanche se Atmel ha questo genere di libri.

flz47655:
Hai colto nel segno, in genere libri che descrivono i registri e l'architettura di una determiata piattaforma sono proprio libri sull'assembly perchè permette di avere un accesso totale alla piattaforma.

Per i micro/mcu devi sempre fare riferimento al data sheet del modello specifico e al reference manual della famiglia, tutti e due li trovi sul sito del produttore, idem per l'assembly specifico.
Non è assolutamente vero che solo con l'assembly hai il totale accesso al micro, lo ottieni anche col C visto che puoi manipolare i singoli registri macchina con la stessa efficienza dell'assembly.
Un programma in C viene tradotto in assembly in modo molto efficiente, un bravo programmatore C ottiene gli stessi risultati di un bravo programmatore assembly in un decimo del tempo, un ottimo programmatore C ottieni risultati eccellenti senza alcuna necessità di ricorrere all'assembly salvo l'inserzione di brevi routine per ottimizzare al massimo alcune funzionalità e nessun programmatore assembly può fare meglio.

Astro mi puoi lincare il reference manual ? Non lo trovo, grazie

Testato:
Astro mi puoi lincare il reference manual ? Non lo trovo, grazie

Per Atmel lo trovi sul dvd, liberamente scaricabile, "Technical Library" , purtroppo l'accesso è lentissimo e ci vogliono molte ore per scaricarlo, però dovresti trovarlo facilmente sotto forma di torrent.

sei insostituibile,
sei maschio, giusto ? :slight_smile: