C’est pour cela que, comme cela a été dit, l’assembleur est plus souvent utilisé pour les parties critiques
A noter que l’on peut optimiser sans coder directement en asm mais en pensant asm lorsque l’on code dans un langage avec du code intermediaire (java/.net) : il suffit de de regarder le code produit, petit exemple ici.
Lorsque j’utilises le mot interprété je sous entendais qu’entre ce qu’on ne sait pas tjrs comment les compilateurs traduisent ou “compilent” le langage xxx en langage machine. (par exemple une boucle for en C , java n’a pas forcément le même langage machine …)
Je suis d’accord avec ta définition :
Java -> compilé puis interprété vers la machine cible
C, C++ -> compilé en assembleur
PHP -> interprété.
Et comme tu le dis l’assembleur est dédié à une plateforme cible concernant registre, MAC et n’est pas forcément exportable sur d’autre plateforme.
Ta définition du langage interpreté n’est donc pas bonne car tu définis la le code intermediaire.
Le compilateur produit ce code pour ensuite y appliquer moultes optimisations, allocations pour produire ensuite le code machine/objet.
A noter que tous les compilateurs permettent d’avoir ce listing du code intermédiaire et que l’on peut même paufiner soit même si on est un guru de l’asm (et capable de lire du code spaghetti).