C ist keine Low-Level-Sprache: Ihr Computer ist kein schneller PDP-11
C Is Not a Low-Level Language (2018)
Die Meltdown- und Spectre-Sicherheitslücken haben ihre Wurzeln in dem Versuch, Prozessoren zu bauen, die C-Code schnell ausführen. Moderne CPUs sind keine simplen PDP-11-Emulatoren mehr, sondern hochkomplexe Maschinen mit Out-of-Order-Ausführung und Spekulation. C-Compiler müssen enorme Anstrengungen unternehmen, um die Illusion einer einfachen, hardwarenahen Sprache aufrechtzuerhalten. Dieser Artikel zeigt, warum C längst keine Low-Level-Sprache mehr ist und wie die Abstraktionen der Sprache die Leistung und Sicherheit beeinträchtigen.
Die Funktionen, die zu diesen Schwachstellen führten, wurden hinzugefügt, damit C-Programmierer weiterhin glauben konnten, sie programmierten in einer Low-Level-Sprache, obwohl das seit Jahrzehnten nicht mehr der Fall ist.