Indice

ugBASIC Manuale Utente

ASM

SINTASSI

   ASM line
   BEGIN ASM
      ...
   END ASM

SCOPO

Il comando ASM è un ponte tra ugBASIC e il linguaggio assembly. Consente di inserire direttamente istruzioni in linguaggio macchina o assembly nel codice sorgente.

In alcune sezioni del codice, in particolare quelle che richiedono le massime prestazioni o un controllo molto preciso sull'hardware, scrivere direttamente in assembly può apportare notevoli miglioramenti di velocità. L'assembly consente di interagire direttamente con i registri e le istruzioni della CPU, offrendo un controllo granulare sull'hardware.

Quando si ha a che fare con codice che deve essere eseguito su architetture diverse, l'assembly può essere utilizzato per scrivere porzioni di codice altamente ottimizzate per una piattaforma specifica. In alcuni casi, potrebbe essere necessario interfacciarsi con codice scritto in assembly o con librerie preesistenti.

La prima sintassi consente di introdurre un singolo codice macchina per ogni riga, mentre la seconda consente di introdurre più righe contemporaneamente.

Nota che il codice assembly è strettamente accoppiato all'architettura del processore. Un blocco di codice assembly scritto per uno Zilog Z80 non funzionerà su un MOS 6502. Inoltre, è meno leggibile del linguaggio ugBASIC, il che lo rende più difficile da gestire. Infine, un singolo errore in assembly può causare l'arresto anomalo del programma e l'uso indiscriminato dell'assembly può interagire con le ottimizzazioni del compilatore.

L'assembly inline dovrebbe essere utilizzato con parsimonia e solo quando assolutamente necessario. È meglio utilizzarlo per piccole sezioni di codice critiche per le prestazioni, per l'accesso diretto a registri o istruzioni specifici del processore e per interfacciarsi con codice legacy o specifico per un hardware.

ESEMPIO

  BEGIN ASM
      LDA #02
      STA $D020
  END ASM ON CPU6502

ABBREVIAZIONE

 Asm

DISPONIBILE SU

PROBLEMI?

Se si riscontra un problema nell'utilizzare questo comando, se si ritiene che vi sia un bug oppure che la spiegazione sia poco chiara, è possibile aprire una segnalazione per questa parola chiave su GitHub. Grazie!

POWERED BY