C LanguageAssemblaggio in linea


Osservazioni

L'assemblaggio in linea è la pratica di aggiungere istruzioni di assemblaggio nel mezzo del codice sorgente C. Nessuno standard ISO C richiede il supporto del montaggio in linea. Poiché non è richiesto, la sintassi per l'assembly in linea varia dal compilatore al compilatore. Anche se in genere è supportato, esistono pochissimi motivi per utilizzare l'assembly inline e molte ragioni per non farlo.

Professionisti

  1. Prestazioni Scrivendo le istruzioni di assemblaggio specifiche per un'operazione, è possibile ottenere prestazioni migliori rispetto al codice assembly generato dal compilatore. Si noti che questi miglioramenti delle prestazioni sono rari. Nella maggior parte dei casi è possibile ottenere un miglioramento delle prestazioni semplicemente riorganizzando il codice C in modo che l'ottimizzatore possa svolgere il proprio lavoro.
  2. Interfaccia hardware Per il codice di avvio del driver o del processore del dispositivo potrebbe essere necessario un codice di assembly per accedere ai registri corretti e per garantire che determinate operazioni si verifichino in un ordine specifico con uno specifico ritardo tra le operazioni.

Contro

  1. La sintassi di portabilità del compilatore per l'assemblaggio in linea non è garantita per essere uguale da un compilatore all'altro. Se si sta scrivendo un codice con un assembly inline che deve essere supportato da compilatori diversi, utilizzare le macro del preprocessore ( #ifdef ) per controllare quale compilatore viene utilizzato. Quindi, scrivi una sezione di assembly inline separata per ciascun compilatore supportato.
  2. Portabilità del processore Non è possibile scrivere assembly in linea per un processore x86 e aspettarsi che funzioni su un processore ARM. L'assembly in linea è progettato per essere scritto per un processore specifico o una famiglia di processori. Se si dispone di un assembly in linea che si desidera supportare su processori diversi, utilizzare le macro del preprocessore per verificare quale processore viene compilato il codice e per selezionare la sezione del codice assembly appropriata.
  3. Modifiche prestazionali future L' assemblaggio in linea può essere scritto in attesa di ritardi basati su una determinata velocità di clock del processore. Se il programma è compilato per un processore con un clock più veloce, il codice assembly potrebbe non funzionare come previsto.

Assemblaggio in linea Esempi correlati