Executable
Program execution |
---|
General concepts |
Types of code |
Compilation strategies |
Notable runtimes |
|
Notable compilers & toolchains |
|
![](https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Binary_executable_file2.png/220px-Binary_executable_file2.png)
Incomputer science,executable code,anexecutable file,or anexecutable program,sometimes simply referred to as anexecutableorbinary,causes a computer "to perform indicated tasks according to encodedinstructions",[2]as opposed to adata filethat must be interpreted (parsed) by aninterpreterto be functional.[3]
The exact interpretation depends upon the use. "Instructions" is traditionally taken to meanmachine codeinstructions for a physicalCPU.[4]In some contexts, a file containing scripting instructions (such asbytecode) may also be considered executable.
Generation of executable files
[edit]Executable files can be hand-coded in machine language, although it is far more convenient to develop software assource codein ahigh-level languagethat can be easily understood by humans. In some cases, source code might be specified inassembly languageinstead, which remains human-readable while being closely associated with machine code instructions.
The high-level language iscompiledinto either an executable machine code file or a non-executable machine code –object fileof some sort; the equivalent process on assembly language source code is calledassembly.Several object files arelinkedto create the executable. Object files -- executable or not -- are typically stored in acontainer format,such asExecutable and Linkable Format(ELF) orPortable Executable(PE) which isoperating system-specific.[5]This gives structure to the generated machine code, for example dividing it into sections such as.text(executable code),.data(initialized global and static variables), and.rodata(read-only data, such as constants and strings).
Executable files typically also include aruntime system,which implements runtime language features (such astask scheduling,exception handling,calling static constructors and destructors, etc.) and interactions with the operating system, notably passing arguments, environment, and returning anexit status,together with other startup and shutdown features such as releasing resources likefile handles.For C, this is done by linking in thecrt0object, which contains the actual entry point and does setup and shutdown by calling theruntime library.[6]
Executable files thus normally contain significant additional machine code beyond that directly generated from the specific source code. In some cases, it is desirable to omit this, for example for embedded systems development, or simply to understand how compilation, linking, and loading work. In C, this can be done by omitting the usual runtime, and instead explicitly specifying a linker script, which generates the entry point and handles startup and shutdown, such as callingmain
to start and returning exit status to the kernel at the end.[7]
Execution
[edit]In order to be executed by the system (such as anoperating system,firmware[citation needed],orboot loader), an executable file must conform to the system'sapplication binary interface(ABI). In simple interfaces, a file is executed by loading it into memory and jumping to the start of the address space and executing from there.[8]In more complicated interfaces, executable files have additional metadata specifying a separateentry point.For example, in ELF, the entry point is defined in the header'se_entry
field, which specifies the (virtual) memory address at which to start execution.[9]In theGNU Compiler Collection,this field is set by the linker based on the_start
symbol.[10]
See also
[edit]References
[edit]- ^Celovi, Paul (2002).Embedded FreeBSD Cookbook.Elsevier.pp. 108, 187–188.ISBN1-5899-5004-6.Retrieved2022-03-06.
- ^"executable".Merriam-Webster's Online Dictionary.Merriam-Webster.Retrieved2008-07-19.
- ^Mueller, John Paul (2007).Windows Administration at the Command Line for Windows Vista, Windows 2003, Windows XP, and Windows 2000.John Wiley & Sons.p. 24.ISBN978-0-470-04616-6.Retrieved2023-03-06.
- ^"Machine Instructions".GeeksforGeeks.2015-11-03.Retrieved2019-09-18.
- ^"Chapter 4: Object Files".refspecs.linuxbase.org.Retrieved2019-09-18.
- ^Fisher, Tim."List of Executable File Extensions".lifewire.com.Retrieved2019-09-18.
- ^McKellar, Jessica (2010-03-16)."Hello from a libc-free world! (Part 1)".
- ^Smith, James E.;Nair, Ravi (2005-05-16). "The Architecture of Virtual Machines".Computer.38(5): 33–34.doi:10.1109/MC.2005.173.
- ^Rusling, David A. (1999)."Chapter 4 – Processes".The Linux Kernel.sec. 4.8.1 – ELF.Retrieved2023-03-06.
- ^Page, Daniel (2009).A Practical Introduction to Computer Architecture.Springer Science+Business Media.pp. 415–416.ISBN978-1-84882-255-9.Retrieved2023-03-06.
External links
[edit]- EXE File Formatat What Is