Equivalente a NOP in C per Embedded?

Equivalente a NOP in C per Embedded?

C'è un nop intrinseco nella maggior parte dei compilatori, anche Keil dovrebbe avere questo:prova __nop()

Vedi - http://www.keil.com/support/man/docs/armccref/armccref_CJABCDAD.htm

Le funzioni intrinseche sono generalmente più sicure dell'aggiunta diretta di codice assembly per motivi di compatibilità.


Sì. L'assembly inline non fa (ancora) parte dello standard C, varia da compilatore a compilatore e talvolta anche tra diverse architetture di destinazione dello stesso compilatore. Vedere L'asm in linea fa parte dello standard ANSI C? per ulteriori informazioni.

Ad esempio, per il C51 Compilatore Keil, la sintassi per l'assemblaggio in linea è

...
#pragma asm
      NOP
#pragma endasm
...

mentre per ARM , la sintassi è qualcosa di simile a

...
__asm  {
          NOP
       }
...

Dovrai controllare il manuale del compilatore che stai utilizzando.

Per alcuni dei codici operativi più comuni, alcuni compilatori forniscono i cosiddetti intrinseci:questi possono essere chiamati come una funzione C ma essenzialmente inseriscono codice assembly, come _nop_ () .