Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Dubbio inline assembly in c
Forum - C/C++ - Dubbio inline assembly in c

Avatar
luca94 (Normal User)
Pro


Messaggi: 71
Iscritto: 07/05/2008

Segnala al moderatore
Postato alle 15:53
Mercoledì, 15/07/2009
Salve a tutti,
ho un piccolo dubbio riguardo all' inline asm in c.
Allora se voglio inserire un' instruzione asm in una funzione in c faccio così:
Codice sorgente - presumibilmente C/C++

  1. int funzione()
  2. {
  3.       __asm__(
  4.                   "istruzione 1"
  5.                   "instruzione 2"
  6.                   "ecc."
  7.               );
  8. }


Il problema è: se io nel codice asm devo mettere le virgolette, come faccio?
Ad esempio: se devo allocare un stringa "ciao" teoricamente dovrei fare così:
Codice sorgente - presumibilmente C/C++

  1. int funzione()
  2. {
  3.       __asm__(
  4.                   "stringa:  .string "ciao""
  5.                  
  6.               );
  7. }


Ma gcc mi da errore. C'è un modo per inserire delle virgolette nelle virgolette, in modo da poter allocare delle stringhe?
Grazie in anticipo:k::k:

PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 16:02
Mercoledì, 15/07/2009
Non conosco l'assembly, quindi magari è un consiglio errato, penso si faccia come in C, usando i caratteri d'escape: scrivendo per esempio \"

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 2:51
Lunedì, 27/07/2009

non puoi inserire dichiarazioni di stringhe nell'asm di un file c.
puoi però fare così:



Codice sorgente - presumibilmente C/C++

  1. char *p = "ciao a tutti";
  2.  
  3. _asm {
  4.  
  5.  mov eax, p;
  6.  
  7.  [...]
  8.  
  9. }



un metodo per inserire una stringa in un blocco asm e fare un ciclo di _emit con i bytes della stringa e poi puntarla attraverso il suo indirizzo virtuale all'interno del codice.
Ma credo che questo vada ben oltre a quello che vuoi fare te :rofl:

PM Quote