Ich wollte schauen ob mein C++ Pin Objekt genauso effizient ist wie ein 
direkter C-Style Aufruf. Also:
1  | HAL_GPIO_WritePin(GPIOA, PIN, GPIO_PIN_SET);
  | 
vs
1  | STM32Pin pin{GPIOA, PIN};
 | 
2  | ...
  | 
3  | pin.write(true);
  | 
mit
1  | struct STM32Pin {
 | 
2  |    GPIO_TypeDef *port;
  | 
3  |    uint32_t pinnum;
  | 
4  |    STM32Pin() = delete;
  | 
5  |    void write(bool level) const { HAL_GPIO_WritePin(port, pinnum, static_cast<GPIO_PinState>(level)); }
 | 
6  | };
  | 
Antwort: wenn das pin Objekt const gemacht wird, ist der Code identisch 
(-O2 Optimierung).
Siehe hier: https://godbolt.org/z/p6lkWx
Zu dem generierten Assembly habe ich zwei Fragen:
1. Was sollen die ganzen ldrb und strb Befehle für Methode 1?
2. Wenn der pin nicht const ist, werden für Methode 2 (C++ pin) sogar 
weniger Befehle emittiert, wie kann das sein?