Non sono convinto che non esistano libri sull'argomento. Provo a cercare.
Di sicuro alcune tecniche semplici sono descritte nei testi di progettazione dei compilatori. Ma ovviamente questa e' solo una prima parte. Poi ci sono tecniche basate sul modello di cpu (a stack, a registri,…), sull'ottimzzazione delle espressioni a partire dall'albero sintattico, all'espansione dei template (per il C++) ecc.
non ultimo la sostituzione di chiamata a funzione nella corrispondente funzione assembly, le cosiddette ‘intrinsic functions’ di cui esistono i file header in tutte le distribuzioni C/C++ (come la memset!) e che il compilatore conosce.
Questo per dire che ci sono tecniche che dipendono dal paradigma di programmazione e tecniche generali, oltre a tecniche specifiche per la cpu usata.
Comunque cercando ‘code optimization techniques’ con Google, qualcosa si trova.
Quindi, quello che il compilatore genera NON E' 1:1 con quello che ha scritto il programmatore, a meno che il programmatore non sia MOOOOOOOLTO bravo ;-)
https://vvyomjjain.github.io/docs/Code%20Optimization%20Techniques.pdf