Pues la verdad que no habia visto ninguna de las dos charlas, pero otras similares si. No te voy a enganhar.A ver si en el 2006 me dejan ir a la CppCon que la tengo aqui al ladito! Jejeje
En el fondo el gran problema ya no es el flujo y optimizar su orden, que es en lo que es dificil o casi imposible ganar al compilador, sino el modelo de memoria que usa el programa. La mayor parte de los lenguajes tienen un modelo estructurado que asume que variables relacionadas con una entidad (clase y sus atributos, por ejemplo) han de ser compactadas y guardadas de forma unitaria en el mismo bloque de memoria. Casi todos los lenguajes hacen esto porque es cierto que en muchos, quizas la mayoria, de los casos la probabilidad de uso cercano es alta.
Tengo entendido que ya hay modelos de compilacion que son capaces de aceptar resultados de profiling para ver en que partes la cosa no funciona como deberia y poder restructurar el modelo de memoria de una manera mas optima. Esto obviamente ralentiza bastante el proceso de compilacion y lo hace dependiente de ejecuciones concretas en el profiling, pero es un avance muy muy notable.
Pero en lo general si que coincido contigo, generalmente no es recomendable escribir ensamblador. Limita la portabilidad y potencia la aparicion de errores. Eso tampoco quita decir que el emulador escrito en ASM de este hilo sea un gran trabajo y merezca muy mucho la pena! De hecho, la mayor parte de los emuladores de arquitecturas "recientes" requiren de ciertos niveles de ensamblador para poder estar a la altura.
Un saludo a todos!