Visualizzazione dei risultati da 1 a 10 su 19

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    Salve , mi sono posto una domanda: partendo dal fatto che il compilatore , a partire dal file sorgente scritto in linguaggio ad alto livello , una volta compilato , crea il modulo oggetto che è scritto in linguaggio macchina. Adesso sappiamo che il linguaggio macchina varia a seconda della macchina e dell'architettura. Quindi mi chiedo come fa il compilatore a conoscere il linguaggio macchina del calcolatore sul quale viene eseguito?
    Grazie a tutti anticipatamente
    Tipicamente lo stesso compilatore eseguito su piattaforme diverse (es. ARM e Intel) compila codice nativo per il processore su cui gira (nell'esempio ARM e Intel), perchè quando viene portato lo si predispone così.

    I compilatori usualmente supportano (compilano) per default per la versione X di una certa famiglia di processori, lo stesso su cui girano; usando switch a riga di comando si può far sì che il codice sia eseguibile su CPU con determinate estensioni (64 bit, multimedia, oggi crittografia etc).

    Per quanto ne so il compilatore più "jolly" è il mitico Gnu-C (gcc) che è stato portato su (praticamente) qualsiasi cosa, spesso in associazione con Linux e i suoi vari cugini (Unix, Aix e così via).

    Nulla vieta (ma sono più rari,cross compiler) di far predisporre da un processore Intel un codice oggetto per ARM (si usano principalmente per preparare programmi per sistemi embedded).

    Nel mondo desktop oggi esistono relativamente poche famiglie di CPU, con al primissimo posto Intel x86 ed evoluzioni, ARM e poche altre (IBM Power, qualche vestigia MIPS, qualche Itanium, ma sono ormai quasi spariti).

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    Tipicamente lo stesso compilatore eseguito su piattaforme diverse (es. ARM e Intel) compila codice nativo per il processore su cui gira (nell'esempio ARM e Intel), perchè quando viene portato lo si predispone così.

    I compilatori usualmente supportano (compilano) per default per la versione X di una certa famiglia di processori, lo stesso su cui girano; usando switch a riga di comando si può far sì che il codice sia eseguibile su CPU con determinate estensioni (64 bit, multimedia, oggi crittografia etc).

    Per quanto ne so il compilatore più "jolly" è il mitico Gnu-C (gcc) che è stato portato su (praticamente) qualsiasi cosa, spesso in associazione con Linux e i suoi vari cugini (Unix, Aix e così via).

    Nulla vieta (ma sono più rari,cross compiler) di far predisporre da un processore Intel un codice oggetto per ARM (si usano principalmente per preparare programmi per sistemi embedded).

    Nel mondo desktop oggi esistono relativamente poche famiglie di CPU, con al primissimo posto Intel x86 ed evoluzioni, ARM e poche altre (IBM Power, qualche vestigia MIPS, qualche Itanium, ma sono ormai quasi spariti).
    ok . quindi se ho capito bene il compilatore in qualche modo riesce a conoscere il codice macchina della piattaforma sulla quale gira.

  3. #3
    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 . quindi se ho capito bene il compilatore in qualche modo riesce a conoscere il codice macchina della piattaforma sulla quale gira.
    In generale, il compilatore non ha bisogno di sapere nulla della macchina su cui gira.

    Semmai deve sapere l'architettura target per cui compilare, ovvero gli deve essere indicato (tramite apposite opzioni) per quale CPU o famiglia di CPU generare il codice. Se l'architettura richiesta è supportata dal compilatore vuol dire che questo possiede tutte le informazioni del set di istruzioni di quell'architettura.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da oregon Visualizza il messaggio
    In generale, il compilatore non ha bisogno di sapere nulla della macchina su cui gira.

    Semmai deve sapere l'architettura target per cui compilare, ovvero gli deve essere indicato (tramite apposite opzioni) per quale CPU o famiglia di CPU generare il codice. Se l'architettura richiesta è supportata dal compilatore vuol dire che questo possiede tutte le informazioni del set di istruzioni di quell'architettura.
    si ma non ho capito in cosa consistono queste istruzioni?

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.