Executable

Source: Wikipedia, the free encyclopedia.

addresses of the first byte in the second column, which comprises bytes of data in hexadecimal notation (least significant byte first), and the last column consists of the corresponding ASCII form.[1]

In

parsed) by a program to be meaningful.[3]

The exact interpretation depends upon the use. "Instructions" is traditionally taken to mean machine code instructions for a physical CPU.[4] In some contexts, a file containing scripting instructions (such as bytecode) may also be considered executable.

Generation of executable files

Executable files can be hand-coded in machine language, although it is far more convenient to develop software as

high-level language that can be easily understood by humans. In some cases, source code might be specified in assembly language
instead, which remains human-readable while being closely associated with machine code instructions.

The high-level language is

.rodata
(read-only data, such as constants and strings).

Executable files typically also include a

file handles. For C, this is done by linking in the crt0 object, which contains the actual entry point and does setup and shutdown by calling the runtime 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 calling main to start and returning exit status to the kernel at the end.[7]

Execution

In order to be executed by the system (such as an

boot loader), an executable file must conform to the system's application 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 separate entry point. For example, in ELF, the entry point is defined in the header's e_entry field, which specifies the (virtual) memory address at which to start execution.[9] In the GNU Compiler Collection, this field is set by the linker based on the _start symbol.[10]

See also

References

  1. . Retrieved 2022-03-06.
  2. ^ "executable". Merriam-Webster's Online Dictionary. Merriam-Webster. Retrieved 2008-07-19.
  3. . Retrieved 2023-03-06.
  4. ^ "Machine Instructions". GeeksforGeeks. 2015-11-03. Retrieved 2019-09-18.
  5. ^ "Chapter 4: Object Files". refspecs.linuxbase.org. Retrieved 2019-09-18.
  6. ^ Fisher, Tim. "List of Executable File Extensions". lifewire.com. Retrieved 2019-09-18.
  7. ^ McKellar, Jessica (2010-03-16). "Hello from a libc-free world! (Part 1)".
  8. .
  9. ^ Rusling, David A. (1999). "Chapter 4 – Processes". The Linux Kernel. sec. 4.8.1 – ELF. Retrieved 2023-03-06.
  10. . Retrieved 2023-03-06.

External links