nuovo controller Mc Raban basato su STM32 Nucleo

Moderatore: Junior Admin

Avatar utente
FraPaola
TORNITORE E FRESATORE
Messaggi: 1212
Iscritto il: mer set 14, 2016 20:53
Località: Salerno

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da FraPaola »

Ni, il compilatore deve garantirti il risultato.. non l'ordine, esempio semplice.

Codice: Seleziona tutto


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

Codice: Seleziona tutto

gcc  -S -masm=intel testverifica.c -O2
esegui un
cat testverifica.s
vedrai questo codice assembly

Codice: Seleziona tutto

  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: Seleziona tutto

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:
Avatar utente
McMax
CAPO OFFICINA
Messaggi: 9023
Iscritto il: dom gen 31, 2010 21:46
Località: Bussero (MI)

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da McMax »

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à
yrag
CAPO OFFICINA
Messaggi: 32785
Iscritto il: dom nov 06, 2011 17:34
Località: Napoli

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da yrag »

Grazie ! :mrgreen:
Avatar utente
onorino
CAPO OFFICINA
Messaggi: 41550
Iscritto il: mar mar 23, 2010 22:18
Località: Artena(Roma)
Contatta:

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da onorino »

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
yrag
CAPO OFFICINA
Messaggi: 32785
Iscritto il: dom nov 06, 2011 17:34
Località: Napoli

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da yrag »

Si, prendo le distanze, non vorrei che i mastuggiorgio, nella foga, impacchettassero anche me... :mrgreen:
Avatar utente
McMax
CAPO OFFICINA
Messaggi: 9023
Iscritto il: dom gen 31, 2010 21:46
Località: Bussero (MI)

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da McMax »

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à
yrag
CAPO OFFICINA
Messaggi: 32785
Iscritto il: dom nov 06, 2011 17:34
Località: Napoli

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da yrag »

:shock: :frusta: :frusta:
Avatar utente
onorino
CAPO OFFICINA
Messaggi: 41550
Iscritto il: mar mar 23, 2010 22:18
Località: Artena(Roma)
Contatta:

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da onorino »

: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
Avatar utente
FraPaola
TORNITORE E FRESATORE
Messaggi: 1212
Iscritto il: mer set 14, 2016 20:53
Località: Salerno

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da FraPaola »

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:
giacomo328
TORNITORE E FRESATORE
Messaggi: 18490
Iscritto il: mer apr 20, 2011 13:38

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da giacomo328 »

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
Avatar utente
McMax
CAPO OFFICINA
Messaggi: 9023
Iscritto il: dom gen 31, 2010 21:46
Località: Bussero (MI)

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da McMax »

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à
giacomo328
TORNITORE E FRESATORE
Messaggi: 18490
Iscritto il: mer apr 20, 2011 13:38

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da giacomo328 »

PIGI aiuto!!!!
OBBIETTIVO RAGGIUNTO SONO RIUSCITO A FARMI DISATTIVARE
Avatar utente
FraPaola
TORNITORE E FRESATORE
Messaggi: 1212
Iscritto il: mer set 14, 2016 20:53
Località: Salerno

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da FraPaola »

:rotfl:
Ottimo, ho imparato qualcosa!
Musco lapis volutus non obducitur:
Mutatum saxum nequit ullum ducere muscum:
yrag
CAPO OFFICINA
Messaggi: 32785
Iscritto il: dom nov 06, 2011 17:34
Località: Napoli

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da yrag »

Lo dico ad Alan, sarà felice di saperlo... :mrgreen:
Avatar utente
FraPaola
TORNITORE E FRESATORE
Messaggi: 1212
Iscritto il: mer set 14, 2016 20:53
Località: Salerno

Re: nuovo controller Mc Raban basato su STM32 Nucleo

Messaggio da FraPaola »

Chi sarebbe Alan?
Musco lapis volutus non obducitur:
Mutatum saxum nequit ullum ducere muscum:
Rispondi

Torna a “Tig open source - HARDWARE”