¿Por qué elegiría la programación de ensamblaje cuando tiene la opción de codificación C?

El lenguaje ensamblador le da control sobre cada registro dentro de su CPU (registros centrales como R0..R15, CPSR, MSR, PSR y registros mapeados en memoria) y memoria, mientras que con C no puede tener control sobre los registros dentro del núcleo de la CPU (hay una manera hacer esto en C pero eso implica lenguaje ensamblador). A veces las personas quieren tener tanto control sobre su CPU. Por ejemplo. Digamos que alguien está diseñando un sistema operativo y está escribiendo un código para el cambio de contexto que implica guardar los estados del procesador (los registros principales y especiales se guardan durante el cambio de contexto), debe tener control sobre todos y cada uno de los registros del núcleo de la CPU, para que se pueda realizar el cambio de contexto. Por lo tanto, se requiere un tiempo de montaje.

Si no necesita tanto control sobre los registros y el estado de la CPU, debe usar C como una opción de lenguaje de programación o un lenguaje superior como Python, que se adapte a su propósito.

Entonces, si estoy escribiendo una pieza de software que requiere que se manipulen los detalles del nivel de registro, de lo contrario iría con el ensamblaje con el lenguaje que se adapte a mi propósito como C, Python, etc.

El ensamblaje nos proporciona más control del programa. Puede controlar el programa utilizando los registros que desea usar, la cantidad de operaciones de movimiento, por lo que todas estas cosas optimizarán el programa y proporcionarán una ejecución más rápida.

Aparte de esto, hay algunas situaciones en las que solo podemos usar el programa de ensamblaje, por ejemplo, la etapa de arranque inicial de un sistema. Si escribimos este código en la programación en C, necesitará la memoria de la Pila para ejecutarse, lo que no es posible cuando la memoria está encendida. no inicializado (inicializando pila, puntero de pila). Entonces, al menos hasta la etapa de inicialización de la memoria, el código debe estar en lenguaje ensamblador.

El lenguaje ensamblador se utiliza para la programación de bajo nivel, como la programación de microprocesadores o microcontroladores … También puede escribir estos programas usando C, pero su aplicación es diferente. También puedes escribir programación de alto nivel en C, esa es la belleza de C.

Como regla general, preferiría codificar en C. Los compiladores de optimización se han vuelto mejores que la mayoría de los programadores para generar código de ensamblaje.

Por supuesto, a veces hay ocasiones en las que puede ser necesario usar el ensamblaje para pequeñas secciones de un proyecto, pero estas ocasiones son cada vez más raras.