Ich habe eine Menge Zeit damit verbracht, TOC- und Compiler-Design zu studieren, noch nicht fertig, aber ich fühle mich mit den Konzepten wohl. Auf der anderen Seite habe ich ein sehr oberflächliches Wissen über Assembler- und Maschinencode, und ich habe immer den Wunsch/die Notwendigkeit, die beiden Seiten (HLL- und LLL-Darstellung des Codes) zu verbinden, da ich C++ mit großer Aufmerksamkeit lerne Leistungs- und Optimierungsgespräche.Sind Variablenbezeichner am Ende des Tages völlig überflüssig?
C++ ist eine statisch typisierte Sprache:
Meine Frage ist: Unsere Variablen, wenn sie als Ausdrücke in den Aussagen des Codes geschrieben, tun all diese Variablen (und andere Organisationen, die mit Kennungen) zur Laufzeit werden, nur Anweisungen von Adressierung auf Positionen des virtuellen Speichers (für statisch und für global) und Adressierung relevant für Stack-Adresse für lokale Variablen?
Ich meine, nach einer erfolgreichen Kompilierung einschließlich semantischer und syntaktischer Verifikation, ist es nicht klug, Daten zur Laufzeit als garantierte Entitäten von Zielspeicherbytes zu behandeln, ohne irgendeinen Bezeichner oder irgendeine Überprüfung zu denken, mit der Symboltabelle nicht mehr erforderlich?
Wenn meine Frage die Art von Fragen zu sein scheint, die auf mangelnden Lernaufwand zurückzuführen sind (was ich nicht hoffe), bitte informieren Sie mich darüber und sagen Sie mir, wo ich lesen soll. Wenn das der Fall ist, dann ist es ehrlich gesagt, weil ich mich heute auf C++ konzentriere und noch nicht die Möglichkeit habe, fundierte Kenntnisse von Low-Level-Sprachen zu haben, dafür entschuldige ich mich im Voraus.
Das ist im Grunde wie statisch kompilierte Sprachen ohne Introspektion oder Reflexion funktioniert.Wenn Sie eine C++ - Quelldatei kompilieren, hat die vom Compiler generierte Objektdatei keinen Verweis auf die Variablen in der Quelle. Es sind alle Speicherplätze. –
Ja, Ihr Verständnis ist richtig. –
TLDR; und verwirrend. Aber 'C++ ist eine statisch typisierte Sprache:' ist falsch. Es enthält C. –