Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131

    [C++] Disassembly delle eccezioni

    Ciao a tutti

    Allora, io non so come viene poi tradotta il lancio dell'eccezione in assembly, e per questo motivo quando programmo non riesco a rendermi conto di quale soluzione sia più efficente per risolvere un determinato problema

    e naturalmente avrei un po' di domande:

    1 - Ovviamente come si traduce in assembly
    2 - Per poter risalire lo stack una volta lanciata l'eccezione vengono memorizzate informazioni sullo stack? e come fai poi a pulirlo?
    3 - Un blocco try è più lento nell'esecuzione rispetto ad un normale blocco di istruzioni, se si perchè?
    4 - Da qualche parte avevo letto che la gestione delle eccezioni impiegava molte risorse ed era poco efficente.. perchè?

    grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    sono un po' confuso.
    vuoi "mimare" il funzionamento di un linguaggio di alto livello in assembler?
    e perchè mai?
    sia sotto il profilo delle eccezioni (scopo o ragion pratica? nessuno o quasi, direi), sia sotto il profilo dello stack (utilità? nessuna o quasi)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    no.. semplicemente volevo sapere come i compilatori traducevano il lancio delle eccezioni in assembly, per curiosità, ma anche perchè non riesco a rendermi conto se in una situazione siano più efficente usare l'eccezioni oppure tanti if.. (parlo sempre di C++)
    Se non so come viene generato il codice assembly non mi rendo conto di come le cose avvengono realmente

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Compila con l'opzione -S in modo da generare l'assembly e guarda la differenza, no?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Originariamente inviato da Alex'87
    Compila con l'opzione -S in modo da generare l'assembly e guarda la differenza, no?
    hai ragione.. l'ho appena fatto, praticamente chiama una funzione chiamata _CxxThrowException e questa (vista in assembly è a dir poco infinita) e ovviamente contiene molte altre chiamate
    comunque dai grazie dell'aiuto ho capito che se voglio un codice veloce è meglio lasciare da parte le eccezioni visto che il numero di istruzioni per fare un test è circa 1 / 3000 di quelle necessarie per lanciare un eccezione

  6. #6
    Originariamente inviato da XAlbeX
    no.. semplicemente volevo sapere come i compilatori traducevano il lancio delle eccezioni in assembly, per curiosità, ma anche perchè non riesco a rendermi conto se in una situazione siano più efficente usare l'eccezioni oppure tanti if.. (parlo sempre di C++)
    Se non so come viene generato il codice assembly non mi rendo conto di come le cose avvengono realmente
    Da quanto ne so, i dettagli dipendono da compilatore e sistema operativo, su Windows ad esempio se non ricordo male si appoggia ad un altro meccanismo di eccezioni (SEH); in ogni caso per i principi di massima dai un'occhiata qui. Per i dettagli se non sbaglio c'erano un paio di articoli su CodeProject.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Originariamente inviato da MItaly
    Da quanto ne so, i dettagli dipendono da compilatore e sistema operativo, su Windows ad esempio se non ricordo male si appoggia ad un altro meccanismo di eccezioni (SEH); in ogni caso per i principi di massima dai un'occhiata qui. Per i dettagli se non sbaglio c'erano un paio di articoli su CodeProject.
    grazie vado ad leggere

  8. #8
    Per VC++: http://www.codeproject.com/KB/cpp/exceptionhandler.aspx
    Per g++ non ho trovato nulla di così preciso, qui c'è qualcosa di specifico alla piattaforma Itanium che comunque dà un'idea di come avviene il processo in generale.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Originariamente inviato da MItaly
    Per VC++: http://www.codeproject.com/KB/cpp/exceptionhandler.aspx
    Per g++ non ho trovato nulla di così preciso, qui c'è qualcosa di specifico alla piattaforma Itanium che comunque dà un'idea di come avviene il processo in generale.
    grazie ancora ho letto di qua e di la nel link che mi hai dato, e mi sono risposto a tutte e 4 le domande

  10. #10
    Ottimo, ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.