Meta tags:
Headings (most frequently used words):
abi, application, binary, interface, contents, description, embedded, language, abis, library, see, also, references, external, links,
Text of the page (most frequently used words):
the (111), abi (60), and (47), for (35), #interface (22), abis (20), binary (18), code (18), system (18), #library (17), eabi (17), language (16), application (14), edit (13), are (13), function (12), call (12), with (11), different (11), programming (11), arm (11), operating (10), compatibility (10), which (10), this (9), standard (9), software (9), that (9), example (9), languages (8), may (8), from (8), embedded (8), used (8), libraries (8), api (8), wikipedia (7), stack (7), not (7), what (7), other (7), use (6), retrieved (6), object (6), calling (6), microsoft (6), com (6), data (6), compiler (6), systems (6), define (6), types (6), access (6), page (5), links (5), machine (5), convention (5), compilers (5), should (5), gnu (5), main (5), both (5), one (5), 2007 (5), implementation (5), multiple (5), such (5), set (5), include (5), each (5), linux (5), defined (5), how (5), level (5), its (5), calls (5), hardware (5), kernel (5), program (5), file (5), table (4), contents (4), search (4), about (4), short (4), 2020 (4), description (4), org (4), name (4), memory (4), archived (4), between (4), pdf (4), gcc (4), march (4), old (4), new (4), october (4), visual (4), directly (4), also (4), target (4), point (4), files (4), there (4), like (4), whether (4), passed (4), hide (4), move (4), sidebar (4), toggle (3), view (3), safety (3), terms (3), was (3), 2026 (3), wayback (3), pages (3), link (3), june (3), interfaces (3), foreign (3), opaque (3), mangling (3), conventions (3), comparison (3), 2015 (3), mips (3), architecture (3), debian (3), rules (3), native (3), learn (3), tool (3), most (3), usage (3), compatible (3), architectures (3), itanium (3), exception (3), source (3), structure (3), symbol (3), type (3), another (3), instruction (3), run (3), see (3), their (3), details (3), case (3), choice (3), armv7 (3), windows (3), have (3), concrete (3), often (3), changes (3), specific (3), has (3), even (3), same (3), linked (3), supports (3), can (3), when (3), implementations (3), required (3), features (3), long (3), many (3), provide (3), relatively (3), register (3), allows (3), generated (3), registers (3), defines (3), tools (3), developers (2), contact (2), privacy (2), policy (2), additional (2), using (2), organization (2), inc (2), last (2), categories (2), displaying (2), descriptions (2), redirect (2), targets (2), via (2), wikidata (2), dynamic (2), binding (2), related (2), independent (2), pointer (2), alignment (2), parts (2), freescale (2), core (2), summary (2), some (2), amd64 (2), documentation (2), bit (2), port (2), development (2), breaking (2), external (2), pypackaging (2), github (2), 2022 (2), save (2), must (2), january (2), community (2), why (2), still (2), important (2), portable (2), subsets (2), but (2), term (2), mean (2), here (2), oabi (2), linuxdevices (2), original (2), version (2), powerpc (2), x64 (2), intel (2), ibcs (2), handling (2), references (2), environment (2), open (2), interpreter (2), given (2), functions (2), information (2), designed (2), computer (2), portal (2), because (2), programmer (2), they (2), llvm (2), musl (2), libstdc (2), documents (2), into (2), form (2), resulting (2), changing (2), definition (2), own (2), two (2), change (2), make (2), versions (2), top (2), scheme (2), these (2), apis (2), header (2), however (2), ffi (2), ffis (2), current (2), unix (2), upon (2), depends (2), limited (2), layout (2), existing (2), eabis (2), more (2), floating (2), therefore (2), unknown (2), typically (2), performance (2), direct (2), without (2), specifies (2), aspects (2), parameter (2), various (2), isas (2), complete (2), format (2), etc (2), controls (2), callee (2), after (2), first (2), parameters (2), processor (2), toolchain (2), high (2), compilation (2), process (2), appearance (2), upload (2), history (2), read (2), article (2), bahasa (2), log (2), create (2), account (2), donate (2), menu (2), add, topic, mobile, cookie, statement, statistics, conduct, legal, contacts, disclaimers, text, available, under, apply, site, you, agree, registered, trademark, non, profit, wikimedia, foundation, creative, commons, attribution, sharealike, license, rendered, parsoid, edited, august, utc, hidden, webarchive, template, module, annotated, dmy, dates, articles, technology, https, index, php, title, application_binary_interface, oldid, 1367613450, loader, linker, topics, virtual, method, relocation, position, segmentation, static, processors, applications, standards, manual, popular, sun, studio, 2008, x86, μclib, motorola, guide, compendium, thumb, releases, policies, issues, refspecs, linuxfoundation, libc, lsb, ppc64, winters, wg21, curl, libcurl, dual, pasture, basiccabi, webassembly, dev, sutter, herb, 2014, defining, www, faq, desires, aria, isn, anymore, faultlore, strictly, speaking, specification, everyday, described, wiki, armeabiport, eric, christopher, 2003, mailing, list, binutils, sources, redhat, developer, february, andrés, calderón, nelson, castillo, matters, 2016, accelerates, semiconductor, 1995, integrated, product, swig, translator, aim, alliance, poweropen, stores, address, operates, context, computing, allowing, written, facilitate, debugging, debug, virtualization, bytecode, ability, number, specifications, includes, certain, contain, correspond, sysv, kind, distinctions, matter, kinds, generators, option, called, affects, well, triples, uclibc, triple, tables, base, above, describe, transformed, instead, refers, transformation, either, indirectly, incompatibility, break, struct, signature, assembly, although, transforming, identifiers, names, whole, surface, leaving, section, below, result, end, having, incompatible, revised, leading, though, users, had, determines, precompiled, programs, similarly, does, guarantee, produced, intended, runtime, together, std, string, combination, extensions, filling, missing, modern, schemes, encountered, overloading, support, interpretations, choices, stone, exist, valid, reasons, them, ends, intmax_t, time_t, very, hard, parse, resort, nevertheless, originally, serve, role, been, criticized, perceived, deficiencies, official, website, describes, around, rust, almost, every, provides, agreed, themselves, mainly, functioning, hence, ubiquity, furthermore, requires, compared, only, requiring, extern, lingua, franca, feature, needs, extension, widely, impose, limitations, distinction, optional, present, refer, except, latter, uses, slightly, musleabihf, musleabi, optimized, resources, omit, abstractions, found, avoided, allow, smaller, executables, faster, loading, fixed, compact, stacks, running, privileged, mode, custom, operation, indirection, device, driver, affect, linking, desktop, user, space, creates, assemblers, assembler, passing, frame, formats, obsolete, release, rather, than, procedure, numbers, stubs, propagation, entity, named, longjmp, setjmp, unwinding, arguments, return, values, following, caller, responsible, cleaning, pushed, preserved, restore, value, changed, all, organized, size, basic, covered, enables, modification, any, implement, prerequisites, generally, concern, deal, writing, design, low, contrast, before, whereas, compiled, human, readable, build, abstraction, exposed, exposing, consumer, binaries, offer, keeping, stable, over, time, isvs, userspace, free, encyclopedia, item, projects, printable, download, print, export, switch, legacy, parser, get, shortened, url, cite, permanent, general, actions, english, talk, tiếng, việt, oʻzbekcha, ўзбекча, українська, türkçe, русский, português, polski, norsk, bokmål, melayu, 한국어, 日本語, italiano, indonesia, français, suomi, فارسی, español, deutsch, čeština, català, azərbaycanca, العربية, subsection, personal, special, recent, help, contribute, random, events, navigation, jump, content,
Text of the page (random words):
application binary interface wikipedia jump to content main menu main menu move to sidebar hide navigation main page contents current events random article about wikipedia contact us contribute help learn to edit community portal recent changes upload file special pages search search appearance donate create account log in personal tools donate create account log in contents move to sidebar hide top 1 description 2 embedded abi 3 language abis toggle language abis subsection 3 1 c 3 2 c 4 library abi 5 see also 6 references 7 external links toggle the table of contents application binary interface 23 languages العربية azərbaycanca català čeština deutsch español فارسی suomi français bahasa indonesia italiano 日本語 한국어 bahasa melayu norsk bokmål polski português русский türkçe українська oʻzbekcha ўзбекча tiếng việt 中文 edit links article talk english read edit view history tools tools move to sidebar hide actions read edit view history general what links here related changes upload file permanent link page information cite this page get shortened url switch to legacy parser print export download as pdf printable version in other projects wikidata item appearance move to sidebar hide from wikipedia the free encyclopedia interface to software defined in terms of in process machine code access a high level comparison of in kernel and kernel to userspace apis and abis the linux kernel and gnu c library define the linux api after compilation the binaries offer an abi keeping this abi stable over a long time is important for isvs an application binary interface abi is an interface exposed by software that is defined for in process machine code access often the exposing software is a library and the consumer is a program an abi is at a relatively low level of abstraction interface compatibility depends on the target hardware and the software build toolchain in contrast an application programming interface api defines access in source code which is a relatively high level hardware independent and human readable format an api defines an interface at the source code level before compilation whereas an abi defines an interface to compiled code api compatibility is generally the concern for system design and of the toolchain however a programmer may have to deal with an abi directly when writing a program in multiple languages or when using multiple compilers for the same language a complete abi enables a program that supports an abi to run without modification on multiple operating systems that provide the abi the target system must provide any required libraries that implement the abi and there may be other prerequisites description edit interface aspects covered by an abi include processor instruction set with details like register file structure memory access types etc size layout and alignment of basic data types that the processor can directly access calling convention which controls how the arguments of functions are passed and return values retrieved for example it controls the following how the call stack is organized whether all parameters are passed on the call stack or some are passed in registers which registers are used for which function parameters which registers should be preserved by the callee restore its value if changed whether the first function parameter passed on the call stack is pushed first or last whether the caller or callee is responsible for cleaning up the call stack after the function call stack unwinding setjmp longjmp name mangling or how an api entity is named in the resulting object file not in c 1 exception propagation not in c 2 how an application should make system calls to the operating system and if the abi specifies direct system calls rather than procedure calls to system call stubs the system call numbers in the case of a complete operating system abi the binary format of object files program libraries etc example abis include the obsolete intel binary compatibility standard ibcs 3 the system v release 4 abis for various instruction set architectures isas used by many unix like systems and the microsoft windows abis for various isas 4 embedded abi edit an embedded abi eabi used on an embedded operating system specifies aspects such as file formats data types register usage stack frame organization and function parameter passing of an embedded software program each compiler and assembler that supports an eabi creates object code that is compatible with code generated by other such compilers and assemblers this allows developers to link libraries generated by one compiler with object code generated by another typically an eabi is optimized for performance for the limited resources of the target embedded system therefore an eabi may omit abstractions between kernel and user space typically found in desktop operating systems for example dynamic linking may be avoided to allow smaller executables and faster loading fixed register usage allows more compact stacks and kernel calls and running the application in privileged mode allows direct access to custom hardware operation without the indirection of calling a device driver 5 the choice of eabi can affect performance 6 7 widely used eabis include the powerpc 5 arm 8 and mips eabis 9 specific software implementations like the c library may impose additional limitations to form more concrete abis one example is the gnu oabi and eabi for arm both of which are subsets of the arm eabi 10 another point of distinction is whether optional features such as hardware floating point is present for example in gcc and llvm armv7 unknown linux musleabi armv7 unknown linux musleabihf both refer to gnu eabi with the musl c library except the latter uses hardware floating point and therefore has a slightly different call convention 11 language abis edit each programming language may use a different set of features and data types if there is no existing abi for a feature the language often needs to define its own abi as an extension of the existing abi c edit the official website of the c programming language describes c as a lingua franca in foreign function interfaces ffis function calls between different programming languages 12 many languages define their ffis around the c abi for example the extern c of rust and c 13 this is because almost every current operating system both unix like and windows provides an agreed upon c abi these systems themselves mainly provide a c api which depends upon a c abi for functioning hence the ubiquity of a c abi 14 furthermore c is relatively limited in what it requires of the abi rules compared to other languages only requiring definition of data structure layout and calling convention 15 nevertheless c was not originally designed to serve in this role and the abi has been criticized for many of its perceived deficiencies as an ffi c abis are defined by c apis which are defined in c header files however c header files are very hard to parse and most ffi implementations resort to calling the compiler 11 c abis define interpretations for c specific types such as long long time_t intmax_t these choices of types are set in stone by the abi but there exist valid reasons to change them which ends up breaking the abi 16 c abis do not have parts required to support features in other languages e g type safety and memory safety 13 c edit there is no portable c abi even on the same operating system different compilers or combination of compiler and standard library implementations may use different abis 13 most c abis are extensions on top of the c abi filling in the missing name mangling required for function overloading and exception handling details in modern systems two main schemes are encountered microsoft s visual c scheme and the itanium scheme 1 although the abi documents define the rules for transforming identifiers into names they do not define the whole abi surface of the standard library leaving it to the specific standard library implementation see section library abi below as a result each implementation has its own abi even on the same architecture and operating system two object files end up having different abis if linked to standard libraries with incompatible abis 13 in 2015 gcc libstdc revised its implementation of std string leading to an abi change even though the new library supports both abis users still had to make a choice between the old abi and the new abi as this determines what precompiled libraries their programs can be linked to 17 similarly visual c does not guarantee compatibility when code produced by different versions of the compiler intended for different versions of the runtime library are linked together 18 library abi edit as defined above the abi documents describe how an api is transformed into a concrete form at the assembly language level in the case of libraries the term abi instead refers to the concrete interface resulting from the transformation of abi 19 for example changing the type signature of a function either directly or indirectly e g by changing the definition of a struct used by the function often changes the abi to the point of incompatibility an abi break 20 21 because operating systems include a number of libraries for use by the programmer their abis also include the library abis the linux standard base specifications for example includes details about what the symbol tables of certain libraries should contain what api they correspond to and that sysv abi should be used 22 this kind of distinctions matter for compilers and other kinds of code generators in the case of gcc and llvm each option is given a name called a target triple the choice of a standard library implementation also affects the abi for example musl and uclibc for armv7 gnu eabi as well as libstdc and microsoft visual c for x64 windows each have different triples 11 see also edit computer programming portal binary code compatibility ability of computer system to run code for a different system bytecode instruction set designed to be run by a software interpreter comparison of application virtualization software debug symbol information to facilitate code debugging pages displaying short descriptions of redirect targets foreign function interface interface to call functions from other programming languages language binding interface allowing one programming language to use a library written in another native computing software that operates directly in a given context opaque pointer opaque data type which stores a memory address poweropen environment open standard by aim alliance symbol table data structure used by a language translator such as a compiler or interpreter swig open source programming tool microsoft visual c integrated development environment product references edit 1 2 itanium c abi compatible with multiple architectures itanium c abi exception handling compatible with multiple architectures intel binary compatibility standard ibcs x64 calling convention learn microsoft com 1 2 eabi summary powerpc embedded application binary interface 32 bit implementation pdf version 1 0 ed freescale semiconductor inc 1 october 1995 pp 28 30 debian arm accelerates via eabi port linuxdevices com 16 october 2016 archived from the original on 21 january 2007 retrieved 11 october 2007 andrés calderón and nelson castillo 14 march 2007 why arm s eabi matters linuxdevices com archived from the original on 31 march 2007 retrieved 11 october 2007 abi for the arm architecture developer arm com retrieved 4 february 2020 eric christopher 11 june 2003 mips eabi documentation binutils sources redhat com mailing list retrieved 19 june 2020 armeabiport debian wiki strictly speaking both the old and new arm abis are subsets of the arm eabi specification but in everyday usage the term eabi is used to mean the new one described here and oabi or old abi to mean the old one 1 2 3 desires aria 16 march 2022 c isn t a programming language anymore faultlore c language faq www c language org 1 2 3 4 sutter herb 2014 defining a portable c abi pdf why c is still the most important programming language dev community 7 january 2026 tool conventions basiccabi md at main webassembly tool conventions github to save c we must save abi the pasture 13 march 2022 dual abi gcc gnu org c binary compatibility 2015 2026 learn microsoft com libcurl abi curl se application binary interface abi pypackaging native pypackaging native github io winters t 2020 what is abi and what should wg21 do about it pdf interfaces for libc lsb 5 0 ppc64 refspecs linuxfoundation org external links edit policies binary compatibility issues with c a compendium of development rules of thumb for not breaking binary compatibility between library releases os x abi function call guide debian arm eabi port μclib motorola 8 16 bit embedded abi amd64 x86 64 application binary interface at the wayback machine archived 2008 05 28 application binary interface abi for the arm architecture mips eabi documentation sun studio 10 compilers and the amd64 abi at the wayback machine archived 2015 01 14 a summary and comparison of some popular abis m core applications binary interface standards manual for the freescale m core processors v t e application binary interface abi parts conventions alignment calling convention call stack library static machine code memory segmentation name mangling object code opaque pointer position independent code relocation system call virtual method table related topics binary code compatibility foreign function interface language binding linker dynamic loader retrieved from https en wikipedia org w index php title application_binary_interface oldid 1367613450 categories application programming interfaces operating system technology hidden categories articles with short description short description is different from wikidata use dmy dates from june 2020 pages displaying short descriptions of redirect targets via module annotated link webarchive template wayback links this page was last edited on 4 august 2026 at 03 27 utc page was rendered with parsoid text is available under the creative commons attribution sharealike 4 0 license additional terms may apply by using this site you agree to the terms of use and privacy policy wikipedia is a registered trademark of the wikimedia foundation inc a non profit organization privacy policy about wikipedia disclaimers contact wikipedia legal safety contacts code of conduct developers statistics cookie statement mobile view search search toggle the table of contents application binary interface 23 languages add topic
|