An application binary interface (ABI) describes the low-level interface between a computer program and the operating system or another program.
An embedded-application binary interface (EABI) specifies standard conventions for file formats, data types, register usage, stack frame organization, and function parameter passing of an embedded software program.
ABI包含的信息包含:
- 数据类型的size, layout和对齐等;
- 调用约定(),
- 应用程序调用system call的方式
- 如果是完成的操作系统ABI,还要包括object 文件的二进制格式、程序library等
几种常见的EABI包括PowerPC, ARM EABI2,MIPS EABI。
其他几个相关的信息包括:
- 现在很多编译器支持交叉编译,也就是在windows上编译Linux上运行的程序,在编译时就必须明确制定使用什么样的ABI,比如GCC编译器在ARM上支持的ABI有:`apcs-gnu', `atpcs', `aapcs', `aapcs-linux' and `iwmmxt',GCC在i386,x86-64上支持的ABI有:'sysv’ 和 'ms’
- `sysv' for the ABI used on GNU/Linux and other systems, and `ms' for the Microsoft ABI. The default is to use the Microsoft ABI when targeting Microsoft Windows and the SysV ABI on all other systems.
一位仁兄总结的PowerPC上EABI的相关信息:http://blog.sina.com.cn/s/blog_70dd16910100ypf2.html