Red de conocimiento informático - Material del sitio web - Programación híbrida multilingüe

Programación híbrida multilingüe

Todos los programas comienzan igual y terminan siendo código de máquina. Simplemente usan diferentes lenguajes al escribir (los lenguajes de programación son abstracciones de programas. Para comodidad de la programación, no son ejecutables. programas en sí., eventualmente debe compilarse en código de máquina antes de poder ejecutarse. Diferentes idiomas simplemente son compilados por diferentes personas y usan diferentes sintaxis). El resultado compilado es código de máquina. La llamada a función es un paso muy simple en el código de máquina. Coloque los valores de los parámetros requeridos por la tabla de parámetros en la pila (el orden se acuerda) y luego use la instrucción jmp para saltar a la dirección de la función que se va a ejecutar. A otros programas no les importa lo que hagas para implementar, siempre que me digas la lista de parámetros y la dirección de la función, todos los programas son, en última instancia, códigos de máquina, lo que naturalmente se ajusta a esta regla. . . Entonces, para implementar la intermodulación, solo necesita asignar el archivo de programa de la interfaz de la otra parte a su propio proceso, luego conocer su lista de parámetros de antemano, obtener la dirección de la función de la interfaz, colocar los parámetros en la pila y luego saltar a la dirección de la función. para que implementes la llamada. . . . winodws proporciona un tipo de archivo llamado biblioteca de enlaces dinámicos .dll. Si desea que otros programas lo llamen, simplemente compile el archivo en un dll. Es un archivo de programa, código de máquina puro, y puede ser llamado por cualquier programa. . . .

El método de implementación específico es asignar el archivo al proceso a través de loadliabroray("xxxxx\xxx.dll") y obtener su dirección de función a través de getprocaddress("nombre de función"). Conozca esta función. El formato es int func (int, int, char). Defina un puntero de función de este tipo, proporcione la dirección de getprocaddress ("nombre de función") a este puntero de función y llámelo en formato de lenguaje C. Es muy simple. Todo se debe al sistema operativo. Si aprendes a programar el sistema Windows, lo sabrás. . .

Otra forma es tratar otro programa como un programa servidor y llamarlo indirectamente a través de los datos acordados. . . . Por ejemplo, si hay una cadena llamada "comer", solo necesita enviar la palabra "comer" a otro programa (el sistema operativo proporciona un objeto del núcleo llamado tubería, a través del cual puede enviar la cadena "comer" a otro programa que también usa la tubería. El programa envía datos), escribió el programa para saber qué iba a hacer y luego lo ejecutó él mismo. . .