笔者来聊聊ARM的函数的调用规则
1、ARM函数调用规则介绍
首先介绍几个术语,
- AAPCS:Procedure Call Standard for the ARM Architecture
- APCS:ARM Procedure Call Standard
- TPCS:Thumb Procedure Call Standard
- ATPCS:ARM-Thumb Procedure Call Standard
- ABI:Application Binary Interface
- EABI:Embedded Application Binary Interface
前三个基本就是ARM 架构的程序调用标准(包括ARM指令以及thumb指令),最后两个是程序二进制接口,描述是汇编下面寄存器名使用、函数调用、压栈、参数传递以及程序返回等一系列接口标准。
比如x86与arm架构的ABI 就不兼容,寄存器都不一样,肯定就是无法互相使用,包括最近比较火热的RISC-V架构。
2、ARM32/64 函数调用规则
ARM架构下面分为32位以及64位的程序,其标准有些不同以及扩展,可分开来讲。