Newsgroup: it.comp.programmare.win32
Titolo: [OT] ASM inline con VC++6

Come posso inserire istruzioni Assembly inline?
--
Marco Iannaccone     
marc...@tin.it
ICQ: 18748121           Tolkien
"I've... seen things you people wouldn't believe. Attack ships on fire off
the shoulder of Orion.
I watched C-beams... glitter in the dark near the Tanhauser Gate. All
those... moments will be lost... in time..., like... tears... in... rain."
FAQ it.comp.lang.c: 
http://www.programmazione.it/linguaggi/c/itcomplangc.htm
FAQ it.comp.lang.c++: 
http://www.programmazione.it/linguaggi/c/lang_faq.htm

 Come posso inserire istruzioni Assembly inline?
Devi usare la parola chiave __asm.
DWORD partebassa, partealta;
__asm {
    RDTSC
    mov partebassa,eax
    mov partealta,edx
}
---
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

     RDTSC
Comunque, dove posso trovare informazioni dettagliate sulla sintassi?
--



"Lorenzo Lutti" <lorenz...@DOHtiscalinet.it> ha scritto nel messaggio
news:YOQu5.20509$2I.3...@news.infostrada.it...


Come posso inserire istruzioni Assembly inline?
Dipende dal compilatore, non credo esisti una sintassi standard (d'altronde,
se le architetture sono diverse, non potrebbe essere altrimenti). Se usi il
MS VC++, dovrebbe funzionare:
__asm {
    codice asm, in cui puoi anche utilizzare i nomi delle variabili locali
}
Con GCC, mi pare sia:
__asm__(codice);
Ma non ci giurerei.
Saluti,
    Mardy

 }
Si, scusa, avevo indicato il compilatore solo nel subject.
Si usa la sintassi Intel ovviamente, no?(lo chiedo perche gcc usa quella
AT&T)..


 __asm__(codice);
Col gcc purtroppo e` un casino, perche` non si puo` usare la solita
sintassi adottata da tutti gli assembler x86. Hanno tentato di astrarre
persino l'inline assembly (!) e quindi si usa una sorta di
"macro-linguaggio"...


 sulla sintassi?
Ah, ma tu vuoi la sintassi delle istruzioni assembly? Allora cambia
tutto, trovi le programmer's references sul sito della Intel.


Comunque, dove posso trovare informazioni dettagliate sulla sintassi?
Sulla sintassi dell'assembly? Cerca i manuali della intel, sono dei PDF.
Saluti,
    Mardy

 tutto, trovi le programmer's references sul sito della Intel.
No, veramente volevo saper cse tipo se un identificatore rappresenta un
valore o un indirizzo, mentre l'identificatore tra parentesi quadre
rappresenta il valore a quell'indirizzo( come nel NASM), etc... Mi
interessano cose tipo le direttive dell'assembler inline, non le
istruzioni...


 >Comunque, dove posso trovare informazioni dettagliate sulla sintassi?
Eh, no, intendevo le direttive dell'assembler e la sintassi da usare con gli
identificatori per conoscerene l'indirizzo o il valore, etc...


 non le istruzioni...
Dubito che l'inline assembly del Visual C++ supporti delle pragmas o
comunque delle direttive di preprocessore...


AT&T)..
Si', ma a parte il sito della intel non ne conosco altri che parlino di
programmazione in assembly (ma sicuramente ce ne sono).
Saluti,
    Mardy

 Quella e` una dichiarazione di due variabili DWORD...
Certo, solo che, dato che le avevi chiamate partealta e parte bassa, pensavo
a qualche strana sintassi dell'assembler del VC++ che servisse a dichiarare
una variabile a 32 bit definendone appunto una parte alta ed una bassa con
quella sintassi. Ho notato dopo
mov partebassa,eax
mov partealta,edx
vedendo che ognuno delle due era usata come normale variabile a 32 bit.
L'equivoco deriva anche dal fatto che, avendo da poco iniziato a programmare
sotto Windows, non sapevo che esistesse un tipo di dati C a 32 bit chiamato
DWORD, quindi questo convalidava la mia ipotesi su una sintassi
dell'assembler....


identificatori per conoscerene l'indirizzo o il valore, etc...
Guarda sull'help, dovrebbe esserci tutto. Comunque all'interno di una
sezione di assembly inline sono sempre utilizzabili le variabili locali, a
cui pui accedere scrivendo il nome (mi pare senza parentesi quadre).
es.
int Somma(int a, b)
{
    int risultato;
    __asm {
        mov eax, a
        add eax, b
        mov risultato, eax
    }
    return risultato;
}
Almeno credo. Comunque siamo fortemente OT.
Saluti,
    Mardy