quindi conosce il liguaggio usato dal processore?
quindi conosce il liguaggio usato dal processore?
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?
Questa frase che vuol dire?si basa sull architettura di ogni processore sulla quale compiliamo
Anche questa frase non è affatto chiara ...e in base al processore il compilatore usa il set di istruzioni del processore e di quell 'architettura.
Diciamo di sì ...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?
No MP tecnici (non rispondo nemmeno!), usa il forum.
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
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.