MECCANICA e DINTORNI

COSTRUIAMO LE NOSTRE CNC DIVERTENDOCI CON L'AIUTO DI TANTI PROFESSIONISTI ESPERTI
Oggi è gio mar 28, 2024 15:20

Tutti gli orari sono UTC +1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 138 messaggi ]  Vai alla pagina Precedente  1 ... 6, 7, 8, 9, 10  Prossimo
Autore Messaggio
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: gio gen 25, 2018 17:27 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: mer set 14, 2016 20:53
Messaggi: 1212
Località: Salerno
Ni, il compilatore deve garantirti il risultato.. non l'ordine, esempio semplice.
Codice:

int a, b;
void verificaesecuzione(void)
{
   a = b + 1;
   b = 0;
}


Compila con
Codice:
gcc  -S -masm=intel testverifica.c -O2


esegui un
Cita:
cat testverifica.s


vedrai questo codice assembly
Codice:
  mov     eax, DWORD PTR b[rip]
  mov     DWORD PTR b[rip], 0   
  add     eax, 1               
  mov     DWORD PTR a[rip], eax



Se lo ritraduci in c vedrai che
Codice:
mov     eax, DWORD PTR  b[rip]  #  leggi la variabile b nel registro eax
  mov     DWORD PTR b[rip], 0               #b = 0
  add     eax, 1               [b]                  # aggiunge 1 al registro eax
  mov     DWORD PTR a[rip], eax           #  a = b + 1


Il compilatore ha deciso che
b=0;
dovesse avere precedenza rispetto a
a = b + 1;

nonostante noi gli avessimo detto di fare il contrario.!

Questo è un piccolissimo esempio di come il compilatore cambia l'esecuzione delle istruzioni di un codice..
Bada bene, io non stò dicendo che hai torto, sto semplicemente dicendo che nessuno ci dà la certezza di come il compilatore stà codificando il codice! !!

P.S Yrag scusa per L'OT

_________________
Musco lapis volutus non obducitur:
Mutatum saxum nequit ullum ducere muscum:


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: gio gen 25, 2018 21:14 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8842
Località: Bussero (MI)
FraPaola tu stai compilando con gcc un eseguibile che gira sotto un sistema operativo.
Io sto compilando con ARM su un microcontrollore.... parliamo di due cose diverse. Sui microcontrollori i thread si possono gestire ma con altri sistemi e comunque sai sempre qual'è il codice da assegnare al thread e quello che deve essere eseguito con priorità. Oltre a ciò, anche per il codice in thread, NON viene assolutamente modificato MAI l'ordine di esecuzione.
Quando programmi un microcontrollore devi gestire periferiche a bassissimo livello (timing UART, I2C, PWM, ADC, DAC, DMA....); se il compilatore cambiasse l'ordine di esecuzione come dici tu tutta questa roba non funzionerebbe.

Per dirla tutta, il disassembly del codice che porti come esempio avviene perché oggi i compilatori sono più "smart" e quindi decidono che tu hai fatto un errore inizializzando la variabile "b" successivamente all'operazione e lo correggono.

Ai tempi in cui ho studiato io informatica questa roba non esisteva e, per come la vedo io, non dovrebbe esistere nemmeno adesso. Linguaggi come il visual basic, ad esempio, sono un insulto all'informatica.... la macchina deve fare ciò che dico io, non quello che dice lei. In questo modo possiamo imparare dai nostri errori che è l'unica cosa che (per ora) distingue le macchine dall'uomo.... in pratica, il tuo "ni", per una macchina, non dovrebbe esistere. 0 o 1, "si" o "no".

Ovviamente l'ultimo paragrafo è in onore dello zio.... :b24:

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: gio gen 25, 2018 21:19 
Non connesso
CAPO OFFICINA

Iscritto il: dom nov 06, 2011 17:34
Messaggi: 32784
Località: Napoli
Grazie ! :mrgreen:


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: gio gen 25, 2018 21:22 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: mar mar 23, 2010 22:18
Messaggi: 41202
Località: Artena(Roma)
Zio ormai sono partiti per la tangente, ignorali :risatina:

_________________
la democrazia funziona fino a quando fate quello che dico io!
Mc Mazzafrusten meccanico mannaro
il riparatore di riparazioni
er robin hood de no'antri
tagliatore scelto di puntarelle
http://www.lievitoedintorni.it/phpbb/index.php


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: gio gen 25, 2018 21:45 
Non connesso
CAPO OFFICINA

Iscritto il: dom nov 06, 2011 17:34
Messaggi: 32784
Località: Napoli
Si, prendo le distanze, non vorrei che i mastuggiorgio, nella foga, impacchettassero anche me... :mrgreen:


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: ven gen 26, 2018 00:20 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8842
Località: Bussero (MI)
o magari, nella sfiga, impacchettano solo te :mrgreen:

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: ven gen 26, 2018 00:21 
Non connesso
CAPO OFFICINA

Iscritto il: dom nov 06, 2011 17:34
Messaggi: 32784
Località: Napoli
:shock: :frusta: :frusta:


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: ven gen 26, 2018 12:32 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: mar mar 23, 2010 22:18
Messaggi: 41202
Località: Artena(Roma)
:risatina:

_________________
la democrazia funziona fino a quando fate quello che dico io!
Mc Mazzafrusten meccanico mannaro
il riparatore di riparazioni
er robin hood de no'antri
tagliatore scelto di puntarelle
http://www.lievitoedintorni.it/phpbb/index.php


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: lun gen 29, 2018 11:26 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: mer set 14, 2016 20:53
Messaggi: 1212
Località: Salerno
dalla documentazione ufficiale dell'stm32

The order of instructions in the program flow does not always guarantee the order of the
corresponding memory transactions. The reason for this is that:
• The processor can reorder some memory accesses to improve efficiency, providing this
does not affect the behavior of the instruction sequence.
• The processor has multiple bus interfaces.
• Memory or devices in the memory map have different wait states.
• Some memory accesses are buffered or speculative.

Cmq, parlando con alcuni colleghi di ST, mi hanno confermato che l'ipotesi di un riordine delle istruzioni così impattante anche se possibile è alquanto remota come ipotesi, quindi in linea teorica avrei ragione, ma in pratica hai ragione tu.. ottimo ho imparato qualcosa, faccio mea culpa:D

_________________
Musco lapis volutus non obducitur:
Mutatum saxum nequit ullum ducere muscum:


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: lun gen 29, 2018 11:34 
Non connesso
TORNITORE E FRESATORE

Iscritto il: mer apr 20, 2011 13:38
Messaggi: 18490
che vuol dire? che in pratica la macchina ha più buon senso di chi l'ha progettata? allora involontariamente subentrano le tre leggi della robotica?

sempre sia benedetto Isaac Asimov

_________________
OBBIETTIVO RAGGIUNTO SONO RIUSCITO A FARMI DISATTIVARE


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: lun gen 29, 2018 14:02 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8842
Località: Bussero (MI)
FraPaola: "The order of instructions in the program flow does not always guarantee the order of the
corresponding memory transactions. The reason for this is that:"

Qui parla solo di come sono organizzate le istruzioni in memoria, non ha nulla a che vedere con l'instruction pointer, e infatti:
"The processor can reorder some memory accesses to improve efficiency, providing this
does not affect the behavior of the instruction sequence."

Il compilatore non c'entra nulla in questo caso; qui è ST che (giustamente) ti garantisce la giusta sequenza di esecuzione di un codice già caricato in flash. Il problema che hai posto tu compilando con gcc è a livello di compilatore, non di processore.

Più che ipotesi remota diciamo che dovrebbe essere impossibile.... anche perchè risulterebbe in un bug. Non che non ce ne siano, ben intesto, ma se andiamo a considerare i bug allora il discorso è differente.
Un riordino della sequenza di esecuzione da parte del compilatore atto ad ottimizzare il codice non ha senso, soprattutto in un'architettura come ARM.

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: lun gen 29, 2018 15:07 
Non connesso
TORNITORE E FRESATORE

Iscritto il: mer apr 20, 2011 13:38
Messaggi: 18490
PIGI aiuto!!!!

_________________
OBBIETTIVO RAGGIUNTO SONO RIUSCITO A FARMI DISATTIVARE


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: lun gen 29, 2018 15:15 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: mer set 14, 2016 20:53
Messaggi: 1212
Località: Salerno
:rotfl:
Ottimo, ho imparato qualcosa!

_________________
Musco lapis volutus non obducitur:
Mutatum saxum nequit ullum ducere muscum:


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: lun gen 29, 2018 15:25 
Non connesso
CAPO OFFICINA

Iscritto il: dom nov 06, 2011 17:34
Messaggi: 32784
Località: Napoli
Lo dico ad Alan, sarà felice di saperlo... :mrgreen:


Top
 Profilo  
 
 Oggetto del messaggio: Re: nuovo controller Mc Raban basato su STM32 Nucleo
MessaggioInviato: lun gen 29, 2018 15:28 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: mer set 14, 2016 20:53
Messaggi: 1212
Località: Salerno
Chi sarebbe Alan?

_________________
Musco lapis volutus non obducitur:
Mutatum saxum nequit ullum ducere muscum:


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 138 messaggi ]  Vai alla pagina Precedente  1 ... 6, 7, 8, 9, 10  Prossimo

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it