ABI, eli Application Binary Interface on alhaisen tason rajapinta käyttöjärjestelmän ja suoritettavan ohjelman välillä.[1]
ABI määrittelee tietokoneohjelman ja käyttöjärjestelmän, ohjelman ja kirjaston, kahden eri ohjelman tai ohjelman sisäisten osien välisiä toimintamalleja. Siihen kuuluvat kirjaston ja käyttöjärjestelmän aliohjelmien kutsukäytännöt, järjestelmäkutsut, se mitä aliohjelmia on saatavilla sekä ohjelma-, kirjasto- ja objektitiedostojen tiedostomuodot.
ABI:n tekniset yksityiskohdat peitetään ohjelmointirajapintojen alle helpottamaan ohjelmoijien työtä ja ohjelman toteuttamista eri järjestelmissä. Esimerkiksi kaikki Unixit toteuttavat saman ohjelmointirajapinnan (POSIX API), mutta eivät samaa binäärirajapintaa (ABI), joten ohjelmat on käännettävä erikseen joka alustalle ja suoritinarkkitehtuurille. Muun muassa Debian tukee kahta EABI (embedded application binary interface) muotoa ARM-suorittimille tavujärjestyksen mukaan: armel
(pieni-endiaaninen) ja armeb
(iso-endiaaninen).[2][3] ABI:n on määriteltävä myös poikkeuksien käsittely[4], tietorakenteiden tasaus (engl. align) ja muita seikkoja.[5]
ABI voi olla erilainen käytetyn suorittimen, käyttöjärjestelmän, kääntäjän tai kielen mukaan. Tyypillisesti kutsukäytännöt sovitaan käyttöjärjestelmän ja prosessorin mukaan, mutta eri käytäntöjä on ollut.[6][7][8]