Wir werden oft darauf hingewiesen, dass es der Hardware egal ist, in welcher Sprache ein Programm geschrieben ist, da nur der kompilierte Binärcode angezeigt wird. Dies ist jedoch nicht die ganze Wahrheit. Betrachten Sie zum Beispiel den bescheidenen Z80; Zu den Erweiterungen des 8080-Befehlssatzes gehören Befehle wie CPIR, die zum Scannen von C-Zeichenfolgen (mit NULL-Abschluss) nützlich sind, z strlen()
. B. zum Ausführen . Die Designer müssen festgestellt haben, dass das Ausführen von C-Programmen (im Gegensatz zu Pascal, bei dem die Länge einer Zeichenfolge im Header enthalten ist) etwas war, wofür ihr Design wahrscheinlich verwendet wurde. Ein weiteres klassisches Beispiel ist die Lisp-Maschine .
Welche anderen Beispiele gibt es? ZB Befehle, Anzahl und Art der Register , Adressierungsmodi, die einen bestimmten Prozessor dazu bringen, die Konventionen einer bestimmten Sprache zu bevorzugen? Ich interessiere mich besonders für Revisionen derselben Familie.
sizeof(int)
1 muss der Typ char
signiert sein (da int
alle Werte des Typs enthalten sein müssen char
). Ich habe für eine Maschine geschriebenen Code , wo char
und int
sind beide 16-Bit - Integer mit Vorzeichen; Die größten Schwierigkeiten bestehen darin, dass man keine Gewerkschaften für die Typkonvertierung verwenden kann und eine effiziente Speicherung einer großen Anzahl von Bytes manuelles Packen und Entpacken erfordert. Diese Probleme sind geringfügig im Vergleich zu der Möglichkeit in C, dass sizeof (int) == sizeof (long), da ...
unsigned int
Werten hält. C99 verbesserte diese Situation, aber vor C99 gab es keine Möglichkeit, einen potenziell negativen Wert in einem einzigen Schritt mit einem Wert vom Typ zu vergleichen unsigned int
(man müsste testen, ob die Zahl negativ war, bevor der Vergleich durchgeführt wird).