C es casi un ensamblaje, solo 100 veces más legible, y te ayuda cuando tienes muchas variables activas. Sin embargo, está cerca del lenguaje ensamblador. No hay ninguna operación en C que no corresponda casi directamente (o incluso directamente) al lenguaje ensamblador.
ASM: "hacer precisamente lo que digo, precisamente cómo lo digo"
C: "hacer lo que quiero decir, y se puede hacer un poco de reordenamiento limitado si es más rápido y no arruinar los resultados "
C es definitivamente el camino a seguir para cualquier cosa que no sean pequeños trozos que se ocupan directamente de la CPU o el hardware de alguna manera que es difícil de C (instrucciones especiales, por ejemplo). Incluso entonces, los buenos compiladores de C le proporcionan esas instrucciones especiales a través de intrínsecos.
Las CPU modernas son tan complejas que es difícil para un humano predecir qué efecto tendrá una secuencia de instrucciones. Un compilador puede microgestionar todas las latencias y rendimientos y usar consistentemente (cerca) las secuencias de instrucciones óptimas. Es casi seguro que un compilador de C supere con creces a un programador de ensamblaje humano en un código típico. Para los bucles ajustados, el ensamblaje optimizado para seres humanos puede superar a C, pero generalmente no por mucho.
Supongo que con un buen ensamblaje en línea puede obtener mejores resultados en comparación con el ensamblaje puro, ya que el compilador realizará algunas optimizaciones. –
Por lo general, el optimizador se queda fuera de los segmentos de ensamblaje en línea en el supuesto de que si se tomó la molestia de escribirlo, realmente lo quiso decir. Esto puede ser crítico en el firmware del sistema integrado donde es posible que desee utilizar una instrucción específica para obtener un efecto, o desperdiciar deliberadamente una ranura de retardo de la tubería para obtener un ciclo sincronizado correctamente. Su kilometraje variará, verifique su manual, y ciertamente es sólidamente una característica definida de implementación y no muy portátil. – RBerteig
C# bytecode es MSIL, si no me equivoco, el lenguaje de CLR. Puedes hacer algunos ajustes al mismo, pero creo que el intérprete de C# hace un trabajo bastante decente ya. Lino es interesante de una manera experimental. Si nada más, obtiene un poco de uso práctico por su creador. Una vez que lo bueno es que es teóricamente portátil para cualquier sistema. – CodexArcanum