Citazione:
Orginalmente inviato da SoldatoSemplice
In realtà il linguaggio di programmazione nativo per un microcontrollore è solo l'assembly, tutti gli altri linguaggi e dialetti vari del C sono solo dei porting riadattati, tant'è che nessuno raggiunge la resa di un assembly nativo.
|
Ma assolutamente no, il C non è un porting di nulla, tutti i processori/mcu moderni sono sviluppati, a livello set di istruzioni, per essere utilizzati con il C, questo non è valido per la vecchia serie 16, ma è valido per la serie 18 e successive.
Il C genera codice assembly molto compatto ed efficiente, un bravo programmatore C ottiene un eseguibile più veloce, o compatto a seconda del tipo di ottimizzazione richiesta, di un bravo programmatore Assembly.
Il modo ottimale di procedere è inserire del codice Assembly nel listato C per le routine time critical, o dove si deve garantire un certo comportamento specifico, e comunque capita molto raramente di doverlo fare.
Stack USB 2.0, io ne ho realizzato uno che permette device combo (incluso il mix tra HID e CDC) con poco più di 800 righe in C18, è super efficiente e richiede solo una manciata di microsecondi per eseguire una transazione completa.
Volersi incaponire ad usare l'Assembly dove non serve è solo una perdita di tempo.