Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo implementar programación mixta de lenguaje C y lenguaje ensamblador

Cómo implementar programación mixta de lenguaje C y lenguaje ensamblador

Existen muchas aproximaciones a este problema. Si su declaración ensamblada es relativamente simple, puede utilizar el enfoque anterior.

Si su ensamblaje es relativamente grande, puede escribirlo en otro archivo de ensamblaje *.asm. Luego, de acuerdo con las instrucciones que le dio su compilador, abstraiga su función ensambladora en una declaración en lenguaje C. Cree un archivo *.h para que otros lo llamen. Este es un modelo de desarrollo de API de bajo nivel popular ahora.

Por ejemplo, si escribo un archivo ensamblador asm_main.asm para funciones que deben escribirse en declaraciones ensambladas, agrego la oración XDEF asm_main delante del archivo (este es el requisito de mi compilador, use XDEF) y luego se declara en asm_main.h (es decir, una declaración típica de C como U16 asm_main()). De esta manera, si usa funciones ensambladoras en su programa C, solo necesita #incluir "asm_main.h" para llamar a funciones escritas en ensambladora. Para el desarrollo de software a gran escala, este es un método muy importante. Proporciona una interfaz secundaria para llamadas de capa superior. Puede escribir todos los controladores de hardware o API de bajo nivel como este. Los desarrolladores de C no necesitan conocer los detalles del hardware subyacente. Y los cambios en el ensamblaje subyacente no afectarán a C. De esta manera, el programa C que desarrolle será más portátil. Por supuesto, también necesitas algunos conocimientos sobre los principios de compilación. Por ejemplo, en ensamblador, la función asm_main es solo una etiqueta, escrita como asm_main: Correcto, pero ¿qué pasa si necesita algunos parámetros de entrada? Por ejemplo, si desea abstraer U16 asm_main (char, char *), debe considerar cómo se insertan los parámetros en la pila. Por lo general, se insertan en la pila de derecha a izquierda, y todavía hay algunos problemas.

La educación universitaria actual sólo enseña algunas pequeñas habilidades en el desarrollo de microcontroladores, sin un concepto sistemático. Estoy muy dispuesta a compartir mi experiencia en el trabajo con todos.