Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Machine code
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Readability by humans== Machine code can be seen as a set of electrical pulses that make the instructions readable to the computer; it is not readable by humans,{{Sfn|Samuelson|1984|p=683}} with [[Douglas Hofstadter]] comparing it to examining the atoms of a [[DNA]] molecule.{{Sfn|Hofstadter|1979|p=[https://archive.org/details/godelescherbach00doug/page/290 290]}} However, various tools and methods exist to decode machine code to human-readable [[source code]]. One such method is [[disassembly]], which easily decodes it back to its corresponding assembly language [[source code]] because assembly language forms a one-to-one mapping to machine code.{{Sfn|Tanenbaum|1990|p=[https://archive.org/details/structuredcomput00tane/page/398 398]}} Machine code may also be decoded to [[High-level programming language|high-level language]] under two conditions. The first condition is to accept an [[Obfuscation (software)|obfuscated]] reading of the source code. An obfuscated version of source code is displayed if the machine code is sent to a [[decompiler]] of the source language. The second condition requires the machine code to have information about the source code encoded within. The information includes a [[symbol table]] that contains [[debug symbol]]s. The symbol table may be stored within the executable, or it may exist in separate files. A [[debugger]] can then read the symbol table to help the programmer interactively [[debugging|debug]] the machine code in [[Instruction cycle|execution]]. * The [[SHARE Operating System]] (1959) for the [[IBM 709]], [[IBM 7090]], and [[IBM 7094]] computers allowed for an loadable code format named [[SQUOZE]]. SQUOZE was a compressed binary form of [[assembly language]] code and included a symbol table. * Modern IBM mainframe [[operating system]]s, such as [[z/OS]], have available a symbol table named ''Associated data'' (ADATA). The table is stored in a file that can be produced by the [[IBM High-Level Assembler]] (HLASM),<ref name="IBM_ADA"/><REF name=IBM_ADATA /> IBM's [[COBOL]] compiler,<ref name="IBM_COBOL"/> and IBM's [[PL/I]] compiler,<ref>{{cite web |date=2025-03-17 |title=SYSADATA message information |url=https://www.ibm.com/docs/en/epfz/6.1?topic=guide-sysadata-message-information |url-status=live |work=Enterprise PL/I for z/OS 6.1 information |language=en-US}}</ref> either as a separate SYSADATA file or as ADATA records in a [[Generalized object output file]] (GOFF).<ref name=IBM_GOFF /> * [[Microsoft Windows]] has available a symbol table<ref name="Microsoft_Symbols"/> that is stored in a [[program database]] (<code>.pdb</code>) file.<ref name="Microsoft_PDB"/> * Most [[Unix-like]] operating systems have available symbol table formats named [[stabs]] and [[DWARF]]. In [[macOS]] and other [[Darwin (operating system)|Darwin]]-based operating systems, the debug symbols are stored in DWARF format in a separate <code>.dSYM</code> file.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)