Oh, hab das jetzt erst gesehen… Bin da aber eh der falsche für: Mit CPU-Nah meine ich, dass man quasi das schreibt, was die CPU am Ende auch macht. Quasi: Länge des Codes bedeutet direkt Laufzeit der Programms. Taktrate lesen ist im Gegenteil eher schon was komplexeres, was — komisch wie es klingt — eher weniger nah an der CPU ist. Um den Takt zu messen braucht man ja eine externe Referenz.
Als Beispiel für die Maschinennähe kannst du mit Pointern und Arrays arbeiten. Arrays sind ja im Grunde nichts anderes Pointer. „*blah +1“ bedeutet das gleiche wie „blah[1]“. Auch dass du direkt mit den Speicheradressen arbeiten kannst, lässt sich für hardwarenahe Programmierung nutzen. Durch manuelle Speicherverwaltung via Pointer bist du ja quasi sogar dazu gezwungen. Wenn du ein SDK brauchst, ist es nicht mehr Hardwarenah. Wenn du zum Beispiel mal im Code vom Linux-Kernel liest, dann wirst du feststellen, dass dort das meiste mit structs und anderen „normalen“ Sprachelementen realisiert ist.