Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da paolino_delta_t Visualizza il messaggio
    Giudica tu stesso https://github.com/LuaDist/tcc/blob/master/i386-asm.h

    E questa è l'ISA x86 http://www.intel.com/content/dam/www...ual-325383.pdf

    Come vedi, il compilatore conosce ogni minimo dettaglio della cpu per cui sta andando a compilare i sorgenti.
    ok da quello che ho capito si basa sull architettura di ogni processore sulla quale compiliamo e in base al processore il compilatore usa il set di istruzioni del processore e di quell 'architettura. quindi penso che la risposta definitiva sia che il compilatore viene creata per una determinata famiglia di cpu e processori di quale conosce il linguaggio inteso come istruzioni e modi di indirizzamento. me lo confermate?

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    ok da quello che ho capito
    si basa sull architettura di ogni processore sulla quale compiliamo
    Questa frase che vuol dire?

    e in base al processore il compilatore usa il set di istruzioni del processore e di quell 'architettura.
    Anche questa frase non è affatto chiara ...

    quindi penso che la risposta definitiva sia che il compilatore viene creata per una determinata famiglia di cpu e processori di quale conosce il linguaggio inteso come istruzioni e modi di indirizzamento. me lo confermate?
    Diciamo di sì ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Questa frase che vuol dire?



    Anche questa frase non è affatto chiara ...



    Diciamo di sì ...
    penso che se le mie risposte non sono chiare allora evidentemente non ho ancora chiare le idee. quindi vi chiedo un ulteriore aiuto riformulando il mio dubbio. allora ogni processore usa un suo libguaggio macchina ovvero un suo codice. adesso se un compilatore come ad esempio gcc , viene usato su diversi computer con diverse cpu ; come fa tale compilatore a creare un modulo oggetto nel linguaggii macchina della cpu sulla quale viene eseguito? come fa a conoscere il linguaggio macchina della cpu sulla quale viene eseguito in modo tale da compilare il sorgente? grazie ancora a tutti

  4. #14
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    come fa tale compilatore a creare un modulo oggetto nel linguaggii macchina della cpu sulla quale viene eseguito? come fa a conoscere il linguaggio macchina della cpu sulla quale viene eseguito in modo tale da compilare il sorgente? grazie ancora a tutti
    Lo conosce perchè i compilatori sono dotati di moduli specifici per generare il codice per i vari processori.
    Quindi a gcc per Intel comprende le librerie e le funzioni per trasformare il C in assembly Intel; per il gcc ARM ci sono le funzioni per ARM e così via.
    Non è che il compilatore X sia "magico" o "universale": è a sua volta un programma che viene preparato per "conoscere" una o più architetture.

  5. #15
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    Lo conosce perchè i compilatori sono dotati di moduli specifici per generare il codice per i vari processori.
    Quindi a gcc per Intel comprende le librerie e le funzioni per trasformare il C in assembly Intel; per il gcc ARM ci sono le funzioni per ARM e così via.
    Non è che il compilatore X sia "magico" o "universale": è a sua volta un programma che viene preparato per "conoscere" una o più architetture.
    Grazie mille
    Grazie anche a oregon

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Devi fare una netta distinzione tra

    1) l'architettura/CPU per cui è fatto il compilatore, ovvero se il compilatore gira su Windows x86 (32 bit), sarà eseguito solo su questo sistema/famiglia di CPU

    2) l'architettura/CPU del sistema target per cui il compilatore genera codice (conoscendo tutto il set di istruzioni e l'architettura della CPU target)

    Sono due cose diverse e indipendenti. Chiaro?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #17
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Devi fare una netta distinzione tra

    1) l'architettura/CPU per cui è fatto il compilatore, ovvero se il compilatore gira su Windows x86 (32 bit), sarà eseguito solo su questo sistema/famiglia di CPU

    2) l'architettura/CPU del sistema target per cui il compilatore genera codice (conoscendo tutto il set di istruzioni e l'architettura della CPU target)

    Sono due cose diverse e indipendenti. Chiaro?
    no oregon questa cosa non mi é chiara potresi spiegarmela meglio per cortesia magari con qualche esempio te ne sarei grato

  8. #18
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    no oregon questa cosa non mi é chiara potresi spiegarmela meglio per cortesia magari con qualche esempio te ne sarei grato
    Il compilatore cos'è? Un programma ovviamente, un programma eseguibile!! Quindi fisicamente è un file binario, al cui interno c'è una vagonata di istruzioni in linguaggio macchina, nel linguaggio macchina della cpu su cui farai girare il compilatore. Sei d'accordo che non puoi far girare un compilatore che contiene istruzioni ARM su un computer con cpu Intel/AMD x86?

    Ma questo compilatore genererà programmi per quale architettura? Dipende da chi l'ha creato. Potresti avere un compilatore x86 che genera eseguibili x86, così come potresti avere un compilatore x86 che genera eseguibili ARM, così come puoi avere un compilatore che, tramite una comodissima opzione passata da riga di comando, ti fa lasciare per quale architettura compilare.

    ARM, in questo esempio, è l'architettura target. Cioè il tuo compilatore è un binario x86, che gira su cpu x86, ma è in grado di prendere i sorgenti C che gli farai compilare e produrre come risultato binari ARM.

    E questo lui può benissimo farlo ( se è stato programmato con tutte le informazioni necessarie su ARM ), perchè alla fin fine, le istruzioni in linguaggio sono solo sequenze di numeri.

    Per esempio puoi avere che la sequenza 001011 significa CALL per x86 e MOVE per ARM. E' fisicamente lo stesso numero, ma le due architetture di CPU lo interpretano diversamente.

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    no oregon questa cosa non mi é chiara potresi spiegarmela meglio per cortesia magari con qualche esempio te ne sarei grato
    E' quello che ti si dice sin dall'inizio ...

    Ti ho fatto già l'esempio ... puoi avere un compilatore C che gira sul tuo PC con Windows e CPU x86 ma che trasforma il codice C in codice macchina per un micro PIC della Microchip ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.