¿Cuál es la mezcla de C y lenguaje ensamblador en un sistema embebido? ¿Cómo es útil?

Ciertas situaciones en el desarrollo de firmware incorporado pueden requerir la combinación de lenguaje ensamblador con lenguaje de alto nivel o viceversa.

El lenguaje de alto nivel y el lenguaje de bajo nivel se pueden mezclar de tres maneras diferentes

  • Mezcla de lenguaje ensamblador con lenguaje de alto nivel como ‘C’
  • Mezclando lenguaje de alto nivel como ‘C’ con lenguaje ensamblador
  • Asamblea en línea
  1. Mezcla de lenguaje ensamblador con lenguaje de alto nivel como ‘C’ :: Suponga que desea agregar un retraso que esté cerca de unos pocos tics de reloj de CPU. Pero no es posible implementar ese retraso exacto usando un lenguaje de alto nivel como ‘C’. porque depende del compilador. entonces, en este caso, debe escribir un código de retraso requerido en el ensamblaje y luego mezclarlo con el lenguaje de alto nivel. Esto se conoce como “Mezcla de lenguaje ensamblador con lenguaje de alto nivel” Donde todo el código está en lenguaje de alto nivel y alguna parte está en ensamblador.
  2. Mezclando lenguaje de alto nivel como ‘C’ con lenguaje ensamblador :: Suponga que está usando lenguaje ensamblador para el desarrollo de firmware incorporado. Aquí debe agregar una instrucción de “Multiplicación” (a = b * c). entonces tu instrucción es

mult $ t0, $ t1
mflo $ s0

que lleva mucho tiempo (para cálculos más complejos y largos como a = b * c / (d-e + (f ^ g))), por lo que aquí puede mezclar lenguaje de alto nivel y escribir un cálculo largo complejo en una sola línea. Esto se conoce como “Mezcla de lenguaje de alto nivel como ‘C’ con lenguaje ensamblador”. Donde todo el código está en lenguaje ensamblador y algunas líneas están en lenguaje de alto nivel.

A veces es ventajoso llamar a subrutinas escritas en lenguaje ensamblador desde programas escritos en C y viceversa. Este diseño se utiliza para programar en sistemas embebidos. Las razones para mezclar las dos se dan a continuación.
Muchos programadores se sienten más cómodos escribiendo en C, y por una buena razón: C es un lenguaje de nivel medio (en comparación con Assembly, que es un lenguaje de bajo nivel), y les ahorra a los programadores algunos de los detalles de la implementación real.
Sin embargo, hay algunas tareas de bajo nivel que pueden implementarse mejor en ensamblador o solo pueden implementarse en lenguaje ensamblador. Además, con frecuencia es útil para el programador observar la salida del ensamblaje del compilador de C y editar a mano u optimizar manualmente el código de ensamblaje de formas que el compilador no puede. El ensamblaje también es útil para procesos críticos en tiempo real o en tiempo real, porque a diferencia de los lenguajes de alto nivel, no hay ambigüedad sobre cómo se compilará el código. El tiempo puede controlarse estrictamente, lo cual es útil para escribir controladores de dispositivo simples.
Fuente: Sistemas Embebidos / Programación C
(Se explica en términos simples aquí)

More Interesting

¿Cuántos sistemas integrados hay?

¿Cuál es la diferencia entre SOC y Embedded Board?

¿Dónde puedo aprender profesionalmente la depuración de sistemas integrados? Un libro, un curso o cualquier cosa.

¿Cuál es la forma correcta de conducir un LED en un sistema integrado?

¿Qué dispositivo puede usar para programar un microcontrolador ARM?

Soy un ingeniero profesional de sistemas embebidos que está bastante versado en C. Quiero comenzar a aprender C ++ para comprender la programación orientada a objetos. ¿Qué tipo de proyectos debería intentar comprender bien el concepto y la familiaridad de C ++?

Si quiero estar a la par con las necesidades futuras de programación en sistemas integrados, ¿qué idiomas debo aprender?

¿Cuál es el alcance de los sistemas integrados y la robótica para un graduado en electrónica?

¿Cuál es el propósito de usar una resistencia pullup en un microcontrolador 8051?

¿Cuál es la diferencia entre firmware, sistema embebido y middleware?

¿Cuál es el mejor microcontrolador para mi proyecto, ARM, PIC32 u otro?

¿Cuáles son las cosas que debemos tener cuidado al diseñar y fabricar circuitos electrónicos para uso industrial que dura años?

Soy un estudiante de segundo año de B.Tech en ingeniería física. Estoy interesado en sistemas embebidos, y he realizado proyectos básicos usando la placa Arduino. ¿Cuáles son las opciones de MS para alguien como yo y cómo debo hacerlo?

¿Cuáles son los beneficios de usar microcontroladores?

Cómo comenzar con RTOS