Pagina 1 di 2

Operazioni matematiche

MessaggioInviato: 12 set 2012, 22:34
da gyruss
Ciao a tutti. Avrei una domanda da porre relativa alla compilazione di un programma in C per micro a 8 bit.
Tenuto conto che sul data sheet del micro (supponiamo ad esempio il solito 16f690) non esiste una istruzione in assembler che possa fare una divisione matematica tra due numeri se non scrivendo N linee di programma, sempre in assembler, chiedo se al momento della compilazione è il compilatore stesso a sopperire a questa mancanza magari creando un algoritmo tale da permettere di fare la divisione.
Lo stesso discorso varrebbe per la moltiplicazione.
Questo perché mi ponevo il problema sulla scelta del micro, passando magari ad un 16 bit, nel caso che diventi impossibile fare le operazioni che accennavo.
Ho avuto modo di confrontare il numero di istruzioni in assembler di micro a 8 bit e 16 bit e, in quest' ultimo, sono presenti quelle necessarie a fare le operazioni. Dovrò tenerne conto se programmo in C ?
Non ho mai programmato in C e vorrei provare ma ho questo dubbio che mi assilla.
Spero di essere stato sufficientemente chiaro.

Saluti.

Re: Operazioni matematiche

MessaggioInviato: 12 set 2012, 23:29
da TardoFreak
Detto in soldoni.
In C fai qualsiasi cosa con qualsiasi micro.
Con un 8 bit serve più memoria (più istruzioni), è solitamente più lento e devi combattere con la poca RAM a disposizione.
Con un 32 bit usi meno memoria, è molto più veloce (solitamente di tanto, parliamo anche di un fattore 20 o più) e di solito hai FLASH e RAM a volontà.
I programmi che scrivi sono identici, diversi sono i risultati in termini di prestazioni. Con gli 8 bit devi prestare più attenzione un po' a tutto ma le periferiche sono semplici a capirsi. Con i 32 bit vai tranquillo e vivi felice come una pasqua ma bisogna studiare molto il micro e le periferiche.
8 bit e 32 bit costano più o meno lo stesso ma con prestazioni nettamente differenti.
Le operazioni matematiche vengono meglio (molto più veloci e con meno uso di FLASH) con i 32 bit anche perché hanno solitamente un set d' istruzioni potente.
I 16 bit sono una via di mezzo.
Di contro i 32 bit non sono oggetti per principianti, salva qualche eccezione.

Re: Operazioni matematiche

MessaggioInviato: 12 set 2012, 23:37
da gyruss
TardoFreak ha scritto:In C fai qualsiasi cosa con qualsiasi micro.


Quindi posso trascurare ciò che leggo sui data sheet relativo al set di istruzioni assembler ?

Grazie, Marco.

Re: Operazioni matematiche

MessaggioInviato: 12 set 2012, 23:39
da TardoFreak
Esatto.
Il C è bello proprio per questo motivo. ;-)

Re: Operazioni matematiche

MessaggioInviato: 12 set 2012, 23:45
da Pioz
TardoFreak ha scritto:Esatto.
Il C è bello proprio per questo motivo. ;-)


O brutto per quel motivo, dipende dai punti di vista!! :mrgreen:

Re: Operazioni matematiche

MessaggioInviato: 12 set 2012, 23:46
da TardoFreak
Quali? Sono curioso.

Re: Operazioni matematiche

MessaggioInviato: 12 set 2012, 23:49
da gyruss
Grazie Tardo Freak, mi hai tolto un grande dubbio.

Ciao.

Re: Operazioni matematiche

MessaggioInviato: 13 set 2012, 0:00
da Pioz
perché personalmente preferisco l'assembly che il C. Se sai programmare in assembler impari a conoscere bene il micro con cui lavori, l' hardware, i suoi limiti e le sue possibilità, oltre a vedere i vantaggi in termini di velocità e "snellezza" del programma. Quando però non sai da dove partire il C sicuramente è la cosa migliore :mrgreen:. Poi dipende certo da cosa e da come lo devi fare, se lavori con tanti tipi di micro sicuramente il C ti aiuta molto; ma quando ti accorgi di come il compilatore traduce un semplice cilco in 100istruzioni quando ne basterebbero 2 capisci che anche il C ha i suoi limiti!! O sbaglio?
Questo è solo un pensiero, poi per le 4 cavolate che programmiamo a scuola alla fine cambia poco usare C o Assembly :D

Re: Operazioni matematiche

MessaggioInviato: 13 set 2012, 0:03
da TardoFreak
Grazie per la risposta.

Re: Operazioni matematiche

MessaggioInviato: 13 set 2012, 0:05
da Pioz
Niente, ma adesso dimmi un po' la tua opinione che sono curioso anche io!! :D