PDA

View Full Version : visualizzare codice assembly nel visual c++ 2005 express edition


leomeya
12-12-2006, 10:05
come faccio a visualizzare il codice assembly del programma originario in c++ piu' simile all'assembly del mips nel visual c++?

grazie

andbin
12-12-2006, 10:14
come faccio a visualizzare il codice assembly del programma originario in c++ piu' simile all'assembly del mips nel visual c++?Puoi andare nelle opzioni del progetto, sezione C/C++ -> Output Files e impostare l'opzione "Assembler Output" che ti permette di generare un file .asm con il codice assembler.

Oppure in fase di debugging, apri la finestra del disassembly dal menù Debug -> Windows -> Disassembly.

Dipende cosa devi fare ...

71104
12-12-2006, 11:37
come faccio a visualizzare il codice assembly del programma originario in c++ piu' simile all'assembly del mips nel visual c++? Alt+8 durante il debug

leomeya
12-12-2006, 12:03
ragazzi ho questa funzione
qsort(array,count,sizeof(struct myStringStruct),compare);

vorrei vedere il corpo di qsort evidenzio qsort con il destro mi da solo vai a definizione o vai a dichiarazione e mi fa vedere la definizione e la dichiarazione del qsort sulla stdlib.h per vedere il corpo dove devo andare?

andbin
12-12-2006, 12:39
ragazzi ho questa funzione
qsort(array,count,sizeof(struct myStringStruct),compare);

vorrei vedere il corpo di qsort evidenzio qsort con il destro mi da solo vai a definizione o vai a dichiarazione e mi fa vedere la definizione e la dichiarazione del qsort sulla stdlib.h per vedere il corpo dove devo andare?qsort fa parte della libreria standard. Purtroppo la versione Express del VC++ non fornisce i sorgenti della libreria di runtime (ci sono a partire dalla versione "Standard" che si compra), altrimenti sarebbe stato più facile.

Comunque in fase di debugging, fai F11 nella finestra di disassembly sulla CALL che chiama la funzione.

leomeya
12-12-2006, 12:53
mi potresti inviare il file o la libreria che contiene il corpo del qsort?
non ci sono riuscito a visualizzarlo

leomeya
12-12-2006, 22:23
c'e' un anima pia che melo puo' mandare?

leomeya
13-12-2006, 11:42
anima piaaaaaaaaaaaaaaaaaa dove sei???

dierre
13-12-2006, 12:40
penso che nessuno te lo mandi, non penso sia legale.

leomeya
13-12-2006, 12:47
fatto grazie

71104
13-12-2006, 13:12
penso che nessuno te lo mandi, non penso sia legale. non si tratta mica di disassemblaggio eh... al massimo potrebbe non essere legale pubblicarlo...

dierre
13-12-2006, 13:23
non si tratta mica di disassemblaggio eh... al massimo potrebbe non essere legale pubblicarlo...

boh, ho detto solo il mio pensiero :asd:

leomeya
17-12-2006, 19:28
ragazzi ma cosa è void __cdecl qsort (......................) nella dichiarazione della funzione nella libreria del visual??

quel __cdecl che cavolo è??ho cercato su google e msdn ma ci sono spiegazioni troppo vaghe o troppo complicate.
pensateci voi a farmelo capire in maniera semplice sono alle prime armi

andbin
17-12-2006, 21:10
ragazzi ma cosa è void __cdecl qsort (......................) nella dichiarazione della funzione nella libreria del visual??

quel __cdecl che cavolo è??ho cercato su google e msdn ma ci sono spiegazioni troppo vaghe o troppo complicate.
pensateci voi a farmelo capire in maniera semplice sono alle prime armicdecl è una convenzione per il passaggio dei parametri. Non è l'unica, ce ne sono anche altre.

Le caratteristiche di cdecl sono le seguenti:

- I parametri vengono pushati ("spinti") sullo stack da destra verso sinistra. Con una ipotetica funzione:
void funz (int a, int b, int c) { .... }

funz (3, 7, 4);

Il primo parametro ad essere inserito nello stack è il 4, poi il 7 e infine il 3.

- È la funzione chiamante ad occuparsi della "pulizia" dello stack.

- Grazie al fatto che è il chiamante a pulire lo stack, è possibile realizzare funzioni con un numero variabile di argomenti (var-args). Vedi ad esempio le ben note funzioni printf, scanf, ecc....

- Il nome della funzione viene "decorato" con un underscore '_' davanti al nome.


Vedi anche:
http://en.wikipedia.org/wiki/X86_calling_conventions