Tuesday, October 22, 2013

"hard float ABI" vs "soft float ABI"

ABI stands for application binary interface. The term has slightly different meanings in different contexts but in this context it refers to the set of rules used to set up registers and the stack when calling and returning from functions and other details that are required for binaries to be compatible with each other.

The "soft float" ABI passes floating point parameters in integer registers while the "hard float ABI" passes them in vfp (floating point) registers. The two ABIs are not compatible because they use different registers. It is possible to use hardware floating point with the soft-float ABI but doing so means that whenever a floating point value is passed to or returned from a function it must be transferred to an integer register incurring a performance penalty.

source: RaspbianFAQ - What do you mean by "soft float ABI" and "hard float ABI"?

No comments: