La forma en que arm llama a las subrutinas está escrita en lenguaje C. Parece haber muchos controles de formato, pero no está muy claro. Por favor avise.
Si usa lenguaje C para llamar al ensamblaje ARM, existen reglas.
Cuando los programas C y los ensambladores ARM se llaman entre sí, se deben seguir las reglas de las PC (estándar de llamada a procedimiento ARM-pulgar). ATPCS proporciona algunas reglas básicas para llamadas entre subprogramas, como:
Reglas de uso de registros
Los parámetros se pasan entre subprogramas a través de los registros R0 ~ R3 Cuando los parámetros son Cuando el número es mayor. que 4, use la pila para pasar parámetros.
En la subrutina, los registros R4 ~ r11 se utilizan para guardar variables locales.
El registro r12 se utiliza para almacenar el puntero de la pila SP, que se utiliza para bajar la pila cuando regresa la subrutina, registrado como IP. El registro r13 se utiliza como puntero de pila y se registra como SP. El registro r14 se denomina registro de enlace y se denota como LR. Este registro se utiliza para almacenar la dirección de retorno de la subrutina. El registro r15 se denomina contador de programa y se registra como PC. ?
Reglas de uso de la pila
La pila adopta el tipo completamente decreciente (FD), es decir, la pila crece hacia abajo al reducir la dirección de memoria y el puntero de la pila apunta a la dirección más baja. que contenga elementos de datos válidos.
Reglas de paso de parámetros
Los primeros cuatro parámetros enteros se pasan por R0 ~ R3, y otros parámetros se pasan por pila.
Cuando el resultado devuelto por la subrutina es un entero de 32 bits, lo devuelve r0; cuando el resultado devuelto es un entero de 64 bits, lo devuelve r0 y r1, y así sucesivamente.
El método para que el ensamblador llame a un programa C es: primero, use la pseudoinstrucción IMPORT en el ensamblador para declarar previamente la función en lenguaje C que se llamará y luego llame a la función c a través del; Instrucción BL.
El método para que un programa C llame a una subrutina de ensamblaje es: primero use la directiva de exportación para declarar la subrutina llamada en ensamblaje, indicando que la subrutina será llamada en otros archivos y luego úsela en el; Programa C La palabra clave extern declara una subrutina de ensamblaje que se llamará como una función externa.